示例#1
0
    public override void Update(IM.Number fDeltaTime)
    {
        base.Update(fDeltaTime);

        if (!m_enable)
        {
            return;
        }

        if (!m_enableColliding)
        {
            m_collideRefreshingTime += fDeltaTime;
        }

        if (m_collideRefreshingTime > _collideRefreshingTime)
        {
            m_enableColliding = true;
        }
    }
示例#2
0
        public void Apply(Vector3 curPos, Number curAngle, IM.Number ratio)
        {
            //Debug.Log(string.Format("CalcRootMotion, LastPos:{0} CurPos:{1} LastAngle:{2} CurAngle:{3} Scale:{4}",
            //    _lastPos, curPos, _lastAngle, curAngle, scale));
            _target.ResetRoot();

            Vector3 deltaMoveRoot = Vector3.zero;

            if (!Number.Approximately(scale, Number.zero))
            {
                deltaMoveRoot = (curPos - _lastPos) * scale;
            }

            _lastPos = curPos;

            IM.Number deltaAngle = IM.Math.DeltaAngle(_lastAngle, curAngle);
            _lastAngle = curAngle;

            IM.Vector3 deltaMove;
            Vector3    velocity  = deltaMoveRoot.normalized;
            Number     magnitude = deltaMoveRoot.magnitude;

            if (dirMove != Vector3.zero)
            {
                //TODO Implement Quaternion.LookRotaion
                Number     angle = Vector3.FromToAngle(Vector3.forward, dirMove);
                Quaternion rot   = Quaternion.Euler(Number.zero, angle, Number.zero);
                deltaMove = rot * velocity * magnitude;
            }
            else
            {
                deltaMove = _initRot * velocity * magnitude;
            }

            //Debug.Log(string.Format("CalcRootMotion, DeltaMoveRoot{0} DeltaMove{1} DeltaAngle{2} Ratio:{3} DirMove:{4}",
            //    deltaMoveRoot, deltaMove, deltaAngle, ratio, dirMove));

            _target.Apply(deltaMove * ratio, Quaternion.Euler(IM.Number.zero, deltaAngle, IM.Number.zero));
        }
示例#3
0
 public static IM.Number Range(IM.Number min, IM.Number max)
 {
     return(IM.Number.Raw(Range(min.raw, max.raw)));
 }
示例#4
0
    void OnPlayerStateChanged(PlayerState lastState, PlayerState newState)
    {
        if (newState.m_eState == PlayerState.State.eBePickAndRoll)
        {
            if (!(newState as PlayerState_BePickedAndRolled).IsFallGround())
            {
                return;
            }
        }
        else if (newState.m_eState != PlayerState.State.eFallGround)
        {
            return;
        }
        if (m_player.m_team.m_role != GameMatch.MatchRole.eDefense)
        {
            return;
        }
        if (!m_curMatch.EnableSwitchDefenseTarget())
        {
            return;
        }
        if (m_curMatch.mCurScene.mBall.m_ballState == BallState.eRebound ||
            m_curMatch.mCurScene.mBall.m_ballState == BallState.eLoseBall)
        {
            return;
        }
        IM.Number minDist     = IM.Number.max;
        Player    mate2Switch = null;

        foreach (Player p in m_player.m_team)
        {
            if (p.m_defTargetSwitched)
            {
                return;
            }
            if (p != m_player)
            {
                IM.Number dist = GameUtils.HorizonalDistance(m_player.position, p.position);
                if (dist < new IM.Number(2, 350) && dist < minDist)
                {
                    minDist     = dist;
                    mate2Switch = p;
                }
            }
        }
        if (mate2Switch == null)
        {
            return;
        }
        Player myDefTarget = m_player.m_defenseTarget;

        m_player.m_defenseTarget                        = mate2Switch.m_defenseTarget;
        mate2Switch.m_defenseTarget                     = myDefTarget;
        m_player.m_defTargetSwitched                    = true;
        mate2Switch.m_defTargetSwitched                 = true;
        m_player.m_defenseTarget.m_defenseTarget        = m_player;
        mate2Switch.m_defenseTarget.m_defenseTarget     = mate2Switch;
        m_player.m_defenseTarget.m_defTargetSwitched    = true;
        mate2Switch.m_defenseTarget.m_defTargetSwitched = true;
        UnityEngine.Debug.Log(string.Format("AISystem, switch defense target between {0} and {1}.", m_player.m_name, mate2Switch.m_name));
    }
 public override void Update(IM.Number fDeltaTime)
 {
     base.Update(fDeltaTime);
     curCommand = Command.None;
 }