private EnemyAction CreateEnemyAction(EnemyAction.ACTION_EVENT actionEvent, Vector3 moveTarget) { EnemyAction result = new EnemyAction(actionEvent); result.moveTarget = moveTarget; result.hitTargetIsVector = reactionAction.hitTargetIsVector; if (reactionAction.hitTargetIsVector) { result.hitTargetIsVector = reactionAction.hitTargetIsVector; if (result.hitTargetIsVector) { if (detector.detectedTarget.position.x > transform.position.x) { result.hitTarget = Vector3.right; } else { result.hitTarget = Vector3.left; } } } else { result.hitTarget = detector.detectedTarget.position; } return(result); }
public override void OnEnter() { startTime = Time.timeSinceLevelLoad; if (enemyController.animator) { enemyController.animator.SetBool("HIT", true); } if (enemyController.currentAction.HasHitTarget()) { Vector3 hitDirection = Utils.GetHitDirection(enemyController.currentAction.hitTarget, enemyController.transform); if (enemyController.lastDamageType == HitBox.DAMAGE_TYPE.DASH) { moveController.OnPush((hitDirection.x == 0F ? -1F : hitDirection.x), hitDirection.y, true); } else { moveController.OnPush((hitDirection.x == 0F ? -1F : hitDirection.x), hitDirection.y, false); } } enemyController.hitBox.boxCollider.enabled = false; enemyController.RequestNextAction(); nextAction = enemyController.currentAction.actionEvent; }
public AbstractEnemyState GetEnemyState(EnemyAction.ACTION_EVENT requestedAction) { if (requestedAction == EnemyAction.ACTION_EVENT.ACTION) { return(null); } if (requestedAction == EnemyAction.ACTION_EVENT.HIT) { return(new EnemyHitState(enemyController)); } if (requestedAction == EnemyAction.ACTION_EVENT.IDLE) { return(new EnemyIdleState(enemyController)); } if (requestedAction == EnemyAction.ACTION_EVENT.JUMP) { return(new EnemyJumpState(enemyController)); } if (requestedAction == EnemyAction.ACTION_EVENT.MOVE) { return(new EnemyMoveState(enemyController)); } if (requestedAction == EnemyAction.ACTION_EVENT.SHOOT) { return(new EnemyShootState(enemyController)); } if (requestedAction == EnemyAction.ACTION_EVENT.DIZZY) { return(new EnemyDizzyState(enemyController)); } if (requestedAction == EnemyAction.ACTION_EVENT.FALLING) { return(new EnemyFallingState(enemyController)); } return(null); }