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; } }
/// <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; } //入力はしたけど何もできなかった。 }
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)); }
public Activity ActorDirectionChanged(DialogContext dc, string actorId, ActorDirection direction) { return(CreateEventActivity(dc, "ActorDirectionChanged", new { actorId = actorId, direction = direction.ToString() })); }
public void NextPosture(ActorDirection direction) { if (direction == this.Direction) PostureNumber = (PostureNumber + 0.1f) % 4; else { PostureNumber = 0; this.Direction = direction; } }
/// <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; }
private void Update() { if (!canControl) { return; } ActorDirection inputDirection = CheckInputDirection(); InputMoveControl(inputDirection); if (Input.GetKeyDown(KeyCode.F)) { InputInteract(); } }
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; } }
/// <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(); }
/// <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); } }
/// <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); } }
public Actor() { Direction = 0; PostureNumber = 0; }
public GuiChangeActorDirectionAction GuiChangeActorDirection(string actorId, ActorDirection direction, List <ActionPrecondition> preconditions = null) { return(new GuiChangeActorDirectionAction(actorId, direction, preconditions)); }
public ActorPosition(int x, int y, ActorDirection direction = ActorDirection.Front, bool foreground = false) : base(x, y, foreground) { Direction = direction; }
/// <summary> /// 現在の位置から、目標の座標へ向かって、1ステップ進む。 /// </summary> public void StepToPosition(Vector3 targetPosition, float duration) { ActorDirection direction = PositionToDirection(transform.position, targetPosition); MoveToDirection(direction, duration); }
public virtual void Awake() { m_rb = GetComponent <Rigidbody2D>(); m_direction = new ActorDirection(gameObject); }
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; } }
public GuiChangeActorDirectionAction(string actorId, ActorDirection direction, List <ActionPrecondition> preconditions) : base(preconditions) { ActorId = actorId; Direction = direction; }
void Awake() { m_direction = new ActorDirection(gameObject); rb = GetComponent<Rigidbody2D>(); Debug.Assert(pickupSack != null, "Player doesn't have pickup-sack attached."); }