// -------------------------------------------------------------------------------------------- private void Awake() { if (Instance) { Debug.LogError("Only one PlayerActor can exist at a time!"); Destroy(gameObject); return; } Instance = this; MoveMode = EMoveMode.FreeMove; }
//カーソル移動させたいときはこれを使用してください。 public void MovePointer(EMoveMode mode, Vector3 point) { moveMode = mode; goalPoint = point; if (moveMode != EMoveMode.NORMAL) { abnormalMoveTimer = 0.3f; } //SE if (BGMManager.Instance != null) { BGMManager.Instance.PlaySE("Cursor_Move"); } }
private float abnormalMoveTimer; //ノーマル以外の時に使用される // Use this for initialization void Awake() { moveMode = EMoveMode.NORMAL; abnormalMoveTimer = 0.0f; goalPoint = transform.position; Vector2 temp, temp2; temp.x = 0.09f - 0.045f + 0.1f; temp.y = 0.16f - 0.075f + 0.4f; temp2.x = 0.09f + 0.045f + 0.1f; temp2.y = 0.16f + 0.075f + 0.4f; transform.GetComponent <RectTransform>().anchorMin = temp; transform.GetComponent <RectTransform>().anchorMax = temp2; }
float GetMoveSpeedByMode(EMoveMode Mode) { switch (Mode) { case EMoveMode.Crouch: return(CrouchSpeed); case EMoveMode.Walk: return(WalkSpeed); case EMoveMode.Run: return(RunSpeed); default: case EMoveMode.None: return(0); } }
// -------------------------------------------------------------------------------------------- private void SetMoveMode(EMoveMode moveMode) { if (moveMode == MoveMode) { return; } EMoveMode previousMode = MoveMode; MoveMode = moveMode; _playerHasTakenTacticalTurn = false; _tacticalTurnCooldownAnimation?.Stop(); _tacticalTurnCooldownAnimation = null; _moveModeChanged?.Invoke(new MoveModeChangedInfo { previousMode = previousMode, currentMode = MoveMode, }); }
public void SetHorizontalDirection(Vector2 InputAxis, EMoveMode Mode = EMoveMode.None, float SpeedScalar = 1, bool UseLocalSpace = true) { // Cache input values (-1 to 1) ... float ForwardInput = InputAxis.y; float StrafeInput = InputAxis.x; // Calculate local or world space directions ... Vector3 ForwardDir = (UseLocalSpace) ? this.transform.forward : Vector3.forward; Vector3 RightDir = (UseLocalSpace) ? this.transform.right : Vector3.right; // Get movement direction ... Vector3 MoveDir = ForwardDir * ForwardInput + RightDir * StrafeInput; // Clamp direction so diagnols don't exceed a magnitude of 1 ... MoveDir = Vector3.ClampMagnitude(MoveDir, 1); // Apply ... Mode = (Mode == EMoveMode.None) ? MoveMode : Mode; float MoveSpeed = GetMoveSpeedByMode(Mode) * SpeedScalar; Velocity.x = MoveDir.x * MoveSpeed; Velocity.z = MoveDir.z * MoveSpeed; }
// Update is called once per frame void Update() { Vector3 addTempVec; addTempVec.x = addTempVec.y = addTempVec.z = 0.0f; goalPoint.z = -1.0f; //ノーマルモード時のみ if (moveMode == EMoveMode.NORMAL) { transform.position += (goalPoint - transform.position) * 0.2f; } //カーソルが上下左右に一定時間移動する if (abnormalMoveTimer > 0.01f) { switch (moveMode) { case EMoveMode.UP: addTempVec.x = 0.0f; addTempVec.y = 150.0f; addTempVec.z = 0.0f; break; case EMoveMode.DOWN: addTempVec.x = 0.0f; addTempVec.y = -150.0f; addTempVec.z = 0.0f; break; case EMoveMode.RIGHT: addTempVec.x = 150.0f; addTempVec.y = 0.0f; addTempVec.z = 0.0f; break; case EMoveMode.LEFT: addTempVec.x = -150.0f; addTempVec.y = 0.0f; addTempVec.z = 0.0f; break; } transform.position += addTempVec * Time.deltaTime; abnormalMoveTimer -= Time.deltaTime; //ノーマル状態へ復帰する時の処理 if (abnormalMoveTimer <= 0.01f) { switch (moveMode) { case EMoveMode.UP: addTempVec.x = 0.0f; addTempVec.y = -150.0f; addTempVec.z = 0.0f; break; case EMoveMode.DOWN: addTempVec.x = 0.0f; addTempVec.y = 150.0f; addTempVec.z = 0.0f; break; case EMoveMode.RIGHT: addTempVec.x = -150.0f; addTempVec.y = 0.0f; addTempVec.z = 0.0f; break; case EMoveMode.LEFT: addTempVec.x = 150.0f; addTempVec.y = 0.0f; addTempVec.z = 0.0f; break; } transform.position = goalPoint + addTempVec; moveMode = EMoveMode.NORMAL; abnormalMoveTimer = 0.0f; } } else { //念のため moveMode = EMoveMode.NORMAL; abnormalMoveTimer = 0.0f; } }
//---------------------------------------------------------------------- #region Mono private void Awake() { CharController = GetComponent <CharacterController>(); MoveMode = EMoveMode.Walk; }
public void SetMoveMode(EMoveMode NewMode) { MoveMode = NewMode; }