void BeAdsorbExMove() { if (m_PlayerBehaviour.IsBeAbsordEx) { Vector3 moveVector = (m_PlayerBehaviour.AdsorbExCenterPos - m_PlayerBehaviour.ThisTransform.position).normalized; var motion = moveVector * m_PlayerBehaviour.AdsorbExSpeed * Time.deltaTime; if (SceneDataManager.Instance.IsPositionInBlock(this.m_PlayerBehaviour.ThisTransform.position + motion)) { //modify by xun.wu //this.m_PlayerBehaviour.WalkToPosition = null; SceneDataManager.ColideType colide = SceneDataManager.Instance.GetColideType(this.m_PlayerBehaviour.ThisTransform.position, this.m_PlayerBehaviour.ThisTransform.position + motion); Vector3 oldMotion = new Vector3(motion.x, motion.y, motion.z); if (colide == SceneDataManager.ColideType.COLIDE_LEFTRIGHT) { motion.x = 0; } else { motion.z = 0; } if (SceneDataManager.Instance.IsPositionInBlock(this.m_PlayerBehaviour.ThisTransform.position + motion)) { if (colide == SceneDataManager.ColideType.COLIDE_LEFTRIGHT) { motion.x = oldMotion.x; motion.z = 0; } else { motion.x = 0; motion.z = oldMotion.z; } if (SceneDataManager.Instance.IsPositionInBlock(this.m_PlayerBehaviour.ThisTransform.position + motion)) { } else { //this.m_PlayerBehaviour.HeroCharactorController.Move(motion); this.m_PlayerBehaviour.MoveTo(motion); } } else { //this.m_PlayerBehaviour.HeroCharactorController.Move(motion); this.m_PlayerBehaviour.MoveTo(motion); } } } }
public override void Act() { if (SceneDataManager.Instance.IsPositionInBlock(m_PlayerBehaviour.ThisTransform.position)) { //TraceUtil.Log(SystemModel.Common,TraceLevel.Error,"_++++++++++++Player in block!!!!!!!!!!!"); } if (IsStateReady) { if (m_PlayerBehaviour.IsHero) { if (this.m_PlayerBehaviour.WalkToPosition != null || ((GameManager.Instance.CurrentState == GameManager.GameState.GAME_STATE_TOWN && m_PlayerBehaviour.IsJoyStickPress) || GameManager.Instance.UseJoyStick)) { GoToTarget(); float moveSpeed = 0; moveSpeed = CurrentMoveSpeed; //this.m_PlayerBehaviour.HeroCharactorController.SimpleMove(this.m_PlayerBehaviour.ThisTransform.TransformDirection(Vector3.forward) * this.m_PlayerBehaviour.WalkSpeed); var motion = m_moveVector * moveSpeed * Time.deltaTime;//this.m_PlayerBehaviour.ThisTransform.TransformDirection(Vector3.forward) * moveSpeed * Time.deltaTime; if (m_PlayerBehaviour.IsBeAbsordEx) { Vector3 absordVector = (m_PlayerBehaviour.AdsorbExCenterPos - m_PlayerBehaviour.ThisTransform.position).normalized; motion += absordVector * m_PlayerBehaviour.AdsorbExSpeed * Time.deltaTime; } if (GameManager.Instance.CurrentState == GameManager.GameState.GAME_STATE_TOWN) { this.m_PlayerBehaviour.HeroCharactorController.Move(motion); } else if (SceneDataManager.Instance.IsPositionInBlock(this.m_PlayerBehaviour.ThisTransform.position + motion)) { //modify by xun.wu //this.m_PlayerBehaviour.WalkToPosition = null; SceneDataManager.ColideType colide = SceneDataManager.Instance.GetColideType(this.m_PlayerBehaviour.ThisTransform.position, this.m_PlayerBehaviour.ThisTransform.position + motion); Vector3 oldMotion = new Vector3(motion.x, motion.y, motion.z); if (colide == SceneDataManager.ColideType.COLIDE_LEFTRIGHT) { motion.x = 0; } else { motion.z = 0; } if (SceneDataManager.Instance.IsPositionInBlock(this.m_PlayerBehaviour.ThisTransform.position + motion)) { if (colide == SceneDataManager.ColideType.COLIDE_LEFTRIGHT) { motion.x = oldMotion.x; motion.z = 0; } else { motion.x = 0; motion.z = oldMotion.z; } if (SceneDataManager.Instance.IsPositionInBlock(this.m_PlayerBehaviour.ThisTransform.position + motion)) { } else { //this.m_PlayerBehaviour.HeroCharactorController.Move(motion); this.m_PlayerBehaviour.MoveTo(motion); } } else { //this.m_PlayerBehaviour.HeroCharactorController.Move(motion); this.m_PlayerBehaviour.MoveTo(motion); } } else { //this.m_PlayerBehaviour.HeroCharactorController.Move(motion); this.m_PlayerBehaviour.MoveTo(motion); } } } else { if (null == m_PlayerBehaviour.ClientEndPos) { m_smoothStepTime += Time.deltaTime; if (m_smoothStepTime <= m_smoothTotalTime) { Vector3 nextPos = m_PlayerBehaviour.Smooth.GetCurrentPos(m_smoothStepTime / m_smoothTotalTime); //m_PlayerBehaviour.ThisTransform.LookAt(nextPos); m_PlayerBehaviour.ThisTransform.rotation = m_PlayerBehaviour.Smooth.GetCurrentQuaternion(m_smoothStepTime / m_smoothTotalTime); m_PlayerBehaviour.ThisTransform.position = nextPos; } else { m_PlayerBehaviour.ThisTransform.position = m_PlayerBehaviour.Smooth.GetCurrentPos(1.0f); m_PlayerBehaviour.ThisTransform.rotation = m_PlayerBehaviour.Smooth.GetCurrentQuaternion(1.0f); SMsgActionMove_SCS currentNode = m_PlayerBehaviour.CurrentNode; Vector3 speedVector = new Vector3(currentNode.fDirectX, 0, -1 * currentNode.fDirectY) * currentNode.fSpeed / 10.0f; m_PlayerBehaviour.HeroCharactorController.Move(speedVector * (m_smoothStepTime - m_smoothTotalTime)); } } else { Vector3 moveVector = (m_PlayerBehaviour.ClientEndPos.Value - m_PlayerBehaviour.ThisTransform.position).normalized * m_PlayerBehaviour.WalkSpeed * Time.deltaTime; moveVector.y = 0; if (moveVector != Vector3.zero) { //m_PlayerBehaviour.ThisTransform.LookAt(m_PlayerBehaviour.ThisTransform.position + moveVector); m_PlayerBehaviour.ThisTransform.position += moveVector; } } } string animName = string.Empty; switch (GameManager.Instance.CurrentState) { case GameManager.GameState.GAME_STATE_TOWN: animName = "Walk01"; break; case GameManager.GameState.GAME_STATE_BATTLE: if (m_playerMoveMode == PlayerMoveMode.RUN) { animName = "Walk02"; } else if (m_playerMoveMode == PlayerMoveMode.WALK) { animName = "Walk03"; } break; case GameManager.GameState.GAME_STATE_STORYLINE: animName = "Walk02"; break; default: animName = "Walk01"; break; } if (!m_roleAnimationComponent.IsPlaying(animName)) { m_roleAnimationComponent.CrossFade(animName); } } }