Example #1
0
    //移動を試みる関数(abstractの上書き)
    protected override void TryToMove()
    {
        //移動方向の検知
        moveDirection.x = (int)InputFunction.GetAxisRaw("Horizontal");
        moveDirection.y = (int)InputFunction.GetAxisRaw("Vertical");

        //左右同時押しなどでmoveDirection.x,yがともに0であれば、ここでreturnする
        if (moveDirection.x == 0 && moveDirection.y == 0)
        {
            return;
        }

        //shiftが押されているのであれば、斜め方向にしか向く(移動)することができない
        if (InputFunction.GetKey("LeftShift") && (moveDirection.x == 0 || moveDirection.y == 0))
        {
            return;
        }

        //自機ユニットの向きを変える(この時点では振る舞いをしたことにならない)
        if (moveDirection.x != 0 || moveDirection.y != 0)
        {
            //faceDirectionにmoveDirectionを代入する
            faceDirection = moveDirection;

            //子要素のコンポーネントarrowAnimatorの変数にfaceDirectionを代入する
            arrowAnimator.SetFloat("faceDirectionX", faceDirection.x);
            arrowAnimator.SetFloat("faceDirectionY", faceDirection.y);
        }

        //spaceが押されている場合は移動することができない(振る舞いをしていない判定で戻り値を返す)
        if (InputFunction.GetKey("LeftControl"))
        {
            return;
        }

        //ユニットが移動可能かを判定する(障害物がないかのチェック)
        canMove = CheckCanMove();
        if (canMove == true)
        {
            //Unitの当たり判定を先んじて移動先にずらしておく(こうしないと次のUnitと移動先がかぶることがある)
            boxCollider2D.offset = moveDirection;

            //振る舞い予定をmoveにする
            scheduledBehavior = ScheduledBehavior.Move;
        }
    }
Example #2
0
    //移動可能かどうかを判定し、真偽値を返す関数
    //protected bool CheckCanMove() => Unit.CheckCanMove()を継承

    //ユニットの連続的な移動を始める関数
    //public void StartUnitMovement() => Unit.StartUnitMovement()を継承

    //ユニットを連続的に移動させる反復処理関数
    //protected IEnumerator MoveSmoothly() => Unit.MoveSmoothly()を継承

    //移動を試みる関数
    protected override void TryToAttack()
    {
        //攻撃ボタン"z"が押されていたら攻撃
        if (InputFunction.GetKey("Z"))
        {
            attackType = AttackType.Punch;
        }
        else
        {
            return;
        }

        //振る舞い予定を攻撃にする
        scheduledBehavior = ScheduledBehavior.Attack;

        //攻撃を発射する
        LaunchAttack();
    }
Example #3
0
    //自機ユニットの振る舞いを決定する関数(abstractの上書き)
    public override void DecideBehavior()
    {
        //scheduledBehaviorを未定の状態にする
        scheduledBehavior = ScheduledBehavior.NotDecided;

        //もしキー入力がされていなかったらすぐにreturnする
        if (InputFunction.AnyKey() == false)
        {
            return;
        }


        //もしコマンドウィンドウが表示されている場合
        if (GameManager.commandWindowIsDisplaying == true)
        {
        }
        //そうでない場合
        else
        {
            //pが押された場合パスし、振る舞い予定をパスにする
            if (InputFunction.GetKey("P"))
            {
                scheduledBehavior = ScheduledBehavior.Pass;
            }

            //まずは移動判定を検知する。移動可能であれば振る舞い予定を移動にする。
            if (scheduledBehavior == ScheduledBehavior.NotDecided)
            {
                TryToMove();
            }

            //次に攻撃判定を検知する。攻撃後、振る舞い予定を攻撃にする
            if (scheduledBehavior == ScheduledBehavior.NotDecided)
            {
                TryToAttack();
            }
        }
    }