コード例 #1
0
 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);
             }
         }
     }
 }
コード例 #2
0
    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);
            }
        }
    }