Esempio n. 1
0
    public void SetSkeletonDirection(ActorDirection direction)
    {
        if (direction == ActorDirection.Up)
        {
            animator.SetInteger(aKeyDirection, 2);
            skeletonMecanim.skeleton.ScaleX = 1.0f;
            return;
        }

        if (direction == ActorDirection.Down)
        {
            animator.SetInteger(aKeyDirection, 0);
            skeletonMecanim.skeleton.ScaleX = 1.0f;
            return;
        }

        if (direction == ActorDirection.Right)
        {
            animator.SetInteger(aKeyDirection, 1);
            skeletonMecanim.skeleton.ScaleX = 1.0f;
            return;
        }

        if (direction == ActorDirection.Left)
        {
            animator.SetInteger(aKeyDirection, 1);
            skeletonMecanim.skeleton.ScaleX = -1.0f;
            return;
        }
    }
Esempio n. 2
0
    /// <summary>
    /// 入力の確認と先行入力の登録。
    /// </summary>
    private void InputMoveControl(ActorDirection direction)
    {
        //入力がないなら無視。
        if (direction == ActorDirection.None)
        {
            return;
        }

        //プレイヤーが何らかの行動中なら、入力を先行入力として保持し、終了。
        if (turnManager.IsActing)
        {
            turnManager.OnSolveInputBuffer
            .First()
            .Subscribe(_ => InputMoveControl(direction));
            return;
        }

        //入力した方向とFaceDirectionが異なるなら、向きを変えて終了。
        if (direction != faceDirection.Direction)
        {
            faceDirection.TurnToDirection(direction, 0.1f);
            animeController.SetSkeletonDirection(direction);
            return;
        }

        //入力方向に移動できるなら、移動。
        if (movement.CheckCanMove(Movement.DirectionToVector2(direction)))
        {
            turnManager.TurnStart(TurnManager.TurnBaseTime);
            movement.MoveToDirection(direction, TurnManager.TurnBaseTime);
            return;
        }

        //入力はしたけど何もできなかった。
    }
Esempio n. 3
0
        public GuiPlaceActorAction GuiPlaceActor(string actorId, int x, int y, ActorDirection direction,
                                                 List <ActionPrecondition> preconditions = null)
        {
            var position = new ActorPosition(x, y, direction);

            return(new GuiPlaceActorAction(actorId, position, preconditions));
        }
Esempio n. 4
0
 public Activity ActorDirectionChanged(DialogContext dc, string actorId,
                                       ActorDirection direction)
 {
     return(CreateEventActivity(dc, "ActorDirectionChanged", new
     {
         actorId = actorId,
         direction = direction.ToString()
     }));
 }
Esempio n. 5
0
 public void NextPosture(ActorDirection direction)
 {
     if (direction == this.Direction)
         PostureNumber = (PostureNumber + 0.1f) % 4;
     else
     {
         PostureNumber = 0;
         this.Direction = direction;
     }
 }
Esempio n. 6
0
    /// <summary>
    /// 入力された方向へ向く。
    /// </summary>
    /// <param name="direction"></param>
    public void TurnToDirection(ActorDirection direction, float duration)
    {
        if (Direction == direction)
        {
            return;
        }

        Vector3 degree = new Vector3(0.0f, 0.0f, DirectionToDegree(direction));

        _ = sightTransform.DORotate(degree, duration)
            .OnComplete(() => onFaceTurnComplete.OnNext(Unit.Default));

        Direction = direction;
    }
Esempio n. 7
0
    private void Update()
    {
        if (!canControl)
        {
            return;
        }

        ActorDirection inputDirection = CheckInputDirection();

        InputMoveControl(inputDirection);

        if (Input.GetKeyDown(KeyCode.F))
        {
            InputInteract();
        }
    }
Esempio n. 8
0
 public CActorBullet(CMap map, int x, int y, ActorDirection direction)
     : this(map, x, y)
 {
     switch (direction) {
         case ActorDirection.Up:
             moveup = true;
             break;
         case ActorDirection.Down:
             movedown = true;
             break;
         case ActorDirection.Left:
             moveleft = true;
             break;
         case ActorDirection.Right:
             moveright = true;
             break;
     }
 }
Esempio n. 9
0
    /// <summary>
    /// 現在の位置から、指定方向へ向かって、1ステップ進む。
    /// </summary>
    /// <param name="point"></param>
    public void MoveToDirection(ActorDirection direction, float duration)
    {
        const float unit  = 1.92f;
        Vector2     angle = DirectionToVector2(direction);

        if (!CheckCanMove(angle))
        {
            //TODO ここで壁にぶつかるアニメーションとかを入れておく
            Debug.Log("CantMove");
            return;
        }

        animeController.SetSkeletonDirection(direction);
        animeController.StepAnime();

        _ = transform.DOMove(angle * unit, duration)
            .SetEase(Ease.InOutQuart)
            .SetRelative();
    }
Esempio n. 10
0
    /// <summary>
    /// ActorDirectionをVector2方向成分へ変換。
    /// </summary>
    /// <param name="direction"></param>
    /// <returns></returns>
    public static Vector2 DirectionToVector2(ActorDirection direction)
    {
        switch (direction)
        {
        case ActorDirection.Up:
            return(Vector2.up);

        case ActorDirection.Down:
            return(Vector2.down);

        case ActorDirection.Right:
            return(Vector2.right);

        case ActorDirection.Left:
            return(Vector2.left);

        default:
            return(Vector2.zero);
        }
    }
Esempio n. 11
0
    /// <summary>
    /// ActorDirectionをDegreeへ変換。
    /// </summary>
    /// <param name="direction"></param>
    /// <returns></returns>
    private float DirectionToDegree(ActorDirection direction)
    {
        switch (direction)
        {
        case ActorDirection.Up:
            return(0.0f);

        case ActorDirection.Down:
            return(180.0f);

        case ActorDirection.Right:
            return(270.0f);

        case ActorDirection.Left:
            return(90.0f);

        default:
            return(0.0f);
        }
    }
Esempio n. 12
0
 public Actor()
 {
     Direction = 0;
     PostureNumber = 0;
 }
Esempio n. 13
0
 public GuiChangeActorDirectionAction GuiChangeActorDirection(string actorId,
                                                              ActorDirection direction, List <ActionPrecondition> preconditions = null)
 {
     return(new GuiChangeActorDirectionAction(actorId, direction, preconditions));
 }
Esempio n. 14
0
 public ActorPosition(int x, int y,
                      ActorDirection direction = ActorDirection.Front, bool foreground = false)
     : base(x, y, foreground)
 {
     Direction = direction;
 }
Esempio n. 15
0
    /// <summary>
    /// 現在の位置から、目標の座標へ向かって、1ステップ進む。
    /// </summary>
    public void StepToPosition(Vector3 targetPosition, float duration)
    {
        ActorDirection direction = PositionToDirection(transform.position, targetPosition);

        MoveToDirection(direction, duration);
    }
Esempio n. 16
0
 public virtual void Awake()
 {
     m_rb        = GetComponent <Rigidbody2D>();
     m_direction = new ActorDirection(gameObject);
 }
Esempio n. 17
0
 public virtual void ReverseMovement(ActorDirection direction)
 {
     switch (direction) {
         case ActorDirection.Up:
             m_rect.Y += m_movespeed;
             break;
         case ActorDirection.Down:
             m_rect.Y -= m_movespeed;
             break;
         case ActorDirection.Left:
             m_rect.X += m_movespeed;
             break;
         case ActorDirection.Right:
             m_rect.X -= m_movespeed;
             break;
     }
 }
Esempio n. 18
0
 public GuiChangeActorDirectionAction(string actorId, ActorDirection direction,
                                      List <ActionPrecondition> preconditions) : base(preconditions)
 {
     ActorId   = actorId;
     Direction = direction;
 }
Esempio n. 19
0
	void Awake() {
		m_direction = new ActorDirection(gameObject);
		rb = GetComponent<Rigidbody2D>();
		Debug.Assert(pickupSack != null, "Player doesn't have pickup-sack attached.");
	}