コード例 #1
0
    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);
    }
コード例 #2
0
    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;
    }
コード例 #3
0
 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);
 }