/// <summary> /// 地面行走 /// </summary> void GoToTerrain() { if (m_PlayerBehaviour.IsHero) { if (m_PlayerBehaviour.TargetType == ResourceType.Terrain && GameManager.Instance.CurrentState == GameManager.GameState.GAME_STATE_BATTLE) { Vector3 targetPos = m_PlayerBehaviour.ThisTransform.position + m_moveVector; UpdateRotation(targetPos); UpdateRunState(); } else { m_playerMoveMode = PlayerMoveMode.RUN; Vector2 V1 = new Vector2(this.m_PlayerBehaviour.ThisTransform.position.x, this.m_PlayerBehaviour.ThisTransform.position.z); Vector2 V2 = new Vector2(this.m_PlayerBehaviour.WalkToPosition.Value.x, this.m_PlayerBehaviour.WalkToPosition.Value.z); var walkDistance = Vector2.Distance(V1, V2); //this.m_PlayerBehaviour.ThisTransform.position, this.m_PlayerBehaviour.WalkToPosition.Value); var targetPos = this.m_PlayerBehaviour.WalkToPosition.Value; Vector3 from = new Vector3(targetPos.x, this.m_PlayerBehaviour.ThisTransform.position.y, targetPos.z); m_moveVector = from - this.m_PlayerBehaviour.ThisTransform.position; m_moveVector.y = 0; m_moveVector.Normalize(); UpdateRotation(targetPos); //this.m_PlayerBehaviour.ThisTransform.rotation = Quaternion.LookRotation(from - this.m_PlayerBehaviour.ThisTransform.position, Vector3.up); //TraceUtil.Log(walkDistance); if (walkDistance < ConfigDefineManager.DISTANCE_ARRIVED_TARGET) { this.m_PlayerBehaviour.WalkToPosition = null; //TraceUtil.Log("Stop:"+walkDistance); } } } else { } }
public void UpdateRunState() { float dt = Time.deltaTime; if (m_playerMoveMode == PlayerMoveMode.RUN) { if (m_runTime <= 0) { m_runTime = 0; m_playerMoveMode = PlayerMoveMode.WALK; } else { m_runTime -= dt; } } else if (m_playerMoveMode == PlayerMoveMode.WALK) { if (m_walkTime <= 0) { m_moveEnd = true; } else { m_walkTime -= dt; } } }
public void StartToRun(float runTime, float walkTime) { m_runTime = runTime; m_walkTime = walkTime; m_playerMoveMode = PlayerMoveMode.RUN; m_moveEnd = false; m_moveVector = (this.m_PlayerBehaviour.WalkToPosition.Value - this.m_PlayerBehaviour.ThisTransform.position); m_moveVector.y = 0; m_moveVector.Normalize(); Vector2 V1 = new Vector2(this.m_PlayerBehaviour.ThisTransform.position.x, this.m_PlayerBehaviour.ThisTransform.position.z); Vector2 V2 = new Vector2(this.m_PlayerBehaviour.WalkToPosition.Value.x, this.m_PlayerBehaviour.WalkToPosition.Value.z); var walkDistance = Vector2.Distance(V1, V2);//this.m_PlayerBehaviour.ThisTransform.position, this.m_PlayerBehaviour.WalkToPosition.Value); var targetPos = this.m_PlayerBehaviour.WalkToPosition.Value; //Vector3 from = new Vector3(targetPos.x, this.m_PlayerBehaviour.ThisTransform.position.y, targetPos.z); //this.m_PlayerBehaviour.ThisTransform.rotation = Quaternion.LookRotation(from - this.m_PlayerBehaviour.ThisTransform.position, Vector3.up); }
public void UpdatePlayerMoveMode(PlayerMoveMode playerMoveMode) { switch (playerMoveMode) { case PlayerMoveMode.Crouch: _characterAnimator.SetFloat(PlayerAnimatorStringReferences.MoveState, _playerSpeed.CrouchSpeed); _moveSpeed = _playerSpeed.CrouchSpeed; break; case PlayerMoveMode.Walk: _characterAnimator.SetFloat(PlayerAnimatorStringReferences.MoveState, _playerSpeed.WalkSpeed); _moveSpeed = _playerSpeed.WalkSpeed; break; case PlayerMoveMode.Run: _characterAnimator.SetFloat(PlayerAnimatorStringReferences.MoveState, _playerSpeed.RunSpeed); _moveSpeed = _playerSpeed.RunSpeed; break; } }
public override void DoBeforeEntering() { m_lockStep = 3; if (GameManager.Instance.CurrentState == GameManager.GameState.GAME_STATE_BATTLE && m_PlayerBehaviour.IsHero) { if (m_PlayerBehaviour.m_runEffect != null) { //TODO; set to active when the effect artwork is done m_PlayerBehaviour.m_runEffect.gameObject.SetActive(true); } if (!GameManager.Instance.UseJoyStick) { StartToRun(2.0f, 2.0f); } m_playerMoveMode = PlayerMoveMode.RUN; } m_rotationToTarget = true; this.m_PlayerBehaviour.GetSkillBySkillID(null); base.DoBeforeEntering(); }
private void GoToTarget() { //如果摇杆在动,点击就没有起效,在城镇界面UseJoyStick一直为false,城镇和这个变量一点关系都没有// if ((GameManager.Instance.CurrentState == GameManager.GameState.GAME_STATE_TOWN && m_PlayerBehaviour.IsJoyStickPress) || GameManager.Instance.UseJoyStick) { Vector3 moveDir = m_PlayerBehaviour.JoyStickDir; if (moveDir != Vector3.zero) { this.m_PlayerBehaviour.WalkToPosition = null; this.m_PlayerBehaviour.LastWalkToPosition = null; m_playerMoveMode = PlayerMoveMode.RUN; Vector3 lootAtPos = m_PlayerBehaviour.ThisTransform.position + moveDir * 10; lootAtPos.y = m_PlayerBehaviour.ThisTransform.position.y; this.m_PlayerBehaviour.ThisTransform.rotation = Quaternion.LookRotation(lootAtPos - this.m_PlayerBehaviour.ThisTransform.position, Vector3.up); m_moveVector = moveDir; m_moveVector.y = 0; m_moveVector.Normalize(); } } else { switch (this.m_PlayerBehaviour.TargetType) { case ResourceType.Terrain: GoToTerrain(); break; case ResourceType.Portal: GoToPortal(); break; case ResourceType.NPC: GoToNPC(); break; } } }