public override void UpdateAction()
        {
            switch (state)
            {
            case StateType.TargetWalk:
                StellaMove.AdjustWalkResult res = StellaMove.AdjustWalk(targetX, StellaMove.MoveSpeed);
                if (res == StellaMove.AdjustWalkResult.Reach)
                {
                    state = StateType.Action;
                    StellaMove.myVelocity = Vector3.zero;
                    ToAction();
                }
                else if (res == StellaMove.AdjustWalkResult.Abort)
                {
                    // 移動できなければ歩きに戻します
                    StellaMove.myVelocity = Vector3.zero;
                    StellaMove.instance.ChangeAction(StellaMove.ActionType.NaeWalk);
                }
                break;

            case StateType.Action:
                StellaMove.myVelocity.x = 0f;
                StellaMove.instance.Move();
                break;
            }
        }
Пример #2
0
 public override void UpdateAction()
 {
     if (state != StateType.BackOff)
     {
         base.UpdateAction();
     }
     else
     {
         // 調整を終えて、苗を下す
         if (StellaMove.AdjustWalk(targetX, StellaMove.MoveSpeed) != StellaMove.AdjustWalkResult.Continue)
         {
             ToWalk();
         }
     }
 }
Пример #3
0
 public override void UpdateAction()
 {
     if (state != StateType.BackOff)
     {
         base.UpdateAction();
     }
     else
     {
         // 調整を終えて、苗を下す
         if (StellaMove.AdjustWalk(targetX, StellaMove.MoveSpeed) != StellaMove.AdjustWalkResult.Continue)
         {
             StellaMove.myVelocity.x = 0;
             StellaMove.naeActable.SetCollider(true);
             StellaMove.naeActable = null;
             StellaMove.instance.ChangeAction(StellaMove.ActionType.Walk);
         }
     }
 }
Пример #4
0
        /// <summary>
        /// 行動
        /// </summary>
        public override void UpdateAction()
        {
            switch (state)
            {
            case StateType.Turn:
                if (StellaMove.chrController.isGrounded)
                {
                    // 方向を確認
                    if (StellaMove.instance.Turn())
                    {
                        state = afterTurnState;
                    }
                }
                else
                {
                    // 重力確認
                    StellaMove.instance.Gravity();
                    StellaMove.instance.Move();
                }

                break;

            case StateType.ToTarget:
                // 移動
                if (StellaMove.AdjustWalk(targetX, StellaMove.MoveSpeed) == StellaMove.AdjustWalkResult.Reach)
                {
                    state = StateType.Wait;

                    // 星が飛び去る方向と向きが逆の時、方向転換
                    if (StellaMove.forwardVector.x * Mathf.Sign(Goal.ClearFlyX) < 0f)
                    {
                        StellaMove.instance.StartTurn(-StellaMove.forwardVector.x);
                        afterTurnState = StateType.Wait;
                        state          = StateType.Turn;
                    }
                }
                break;
            }
        }
Пример #5
0
        public override void UpdateAction()
        {
            switch (state)
            {
            case StateType.TargetWalk:
                StellaMove.AdjustWalkResult res = StellaMove.AdjustWalk(targetX, StellaMove.MoveSpeed);
                if ((res == StellaMove.AdjustWalkResult.Reach) ||
                    (res == StellaMove.AdjustWalkResult.Abort))
                {
                    state = StateType.Action;
                    StellaMove.myVelocity = Vector3.zero;
                    ToAction();
                }

                /*
                 * else if (res == StellaMove.AdjustWalkResult.Abort)
                 * {
                 *  // 移動できなければ歩きに戻します
                 *  StellaMove.myVelocity = Vector3.zero;
                 *
                 *  if (StellaMove.NowAction == StellaMove.ActionType.LiftUp)
                 *  {
                 *      ToWalk();
                 *  }
                 *  else
                 *  {
                 *      StellaMove.instance.ChangeAction(StellaMove.ActionType.NaeWalk);
                 *  }
                 * }
                 */
                break;

            case StateType.Action:
                StellaMove.myVelocity.x = 0f;
                StellaMove.instance.Move();
                break;
            }
        }
Пример #6
0
        /// <summary>
        /// 行動
        /// </summary>
        public override void UpdateAction()
        {
            switch (state)
            {
            case StateType.Turn:
                if (StellaMove.ChrController.isGrounded)
                {
                    // 方向を確認
                    if (StellaMove.instance.Turn())
                    {
                        state = afterTurnState;
                    }
                }
                else
                {
                    // 重力確認
                    StellaMove.instance.Gravity();
                    StellaMove.instance.Move();
                }

                break;

            case StateType.ToTarget:
                // 移動
                if (StellaMove.AdjustWalk(targetX, StellaMove.MoveSpeed) == StellaMove.AdjustWalkResult.Reach)
                {
                    state = StateType.Wait;

                    // 星が飛び去る方向と向きが逆の時、方向転換
                    if (StellaMove.forwardVector.x * Mathf.Sign(Goal.ClearFlyX) < 0f)
                    {
                        StellaMove.instance.StartTurn(-StellaMove.forwardVector.x);
                        afterTurnState = StateType.Wait;
                        state          = StateType.Turn;
                    }
                }
                break;

            case StateType.ToTargetAir:
                if (isTurn)
                {
                    isTurn = !StellaMove.instance.Turn();
                }

                Vector3 targetPosition = Goal.StarPosition + StageManager.GoalToStellaOffset;
                targetPosition.x = Goal.StarPosition.x + Mathf.Sign(Goal.ClearFlyX) * StageManager.GoalToStellaOffset.x;
                targetPosition.z = 0f;

                startTime += Time.fixedDeltaTime;
                float t = Mathf.Clamp01(startTime / ToCatchAirSeconds);
                StellaMove.instance.transform.position = Vector3.Lerp(
                    StellaMove.instance.transform.position,
                    targetPosition,
                    t
                    );
                if (t >= 1f)
                {
                    OffsetFromStar = StellaMove.HoldPosition - Goal.StarPosition;
                    state          = StateType.WaitAir;
                }
                Log($"  target={targetPosition} / StarPos={Goal.StarPosition} / goalToStellaOffset={StageManager.GoalToStellaOffset}");
                break;
            }
        }