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; } }
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)); }
public static IM.Number Range(IM.Number min, IM.Number max) { return(IM.Number.Raw(Range(min.raw, max.raw))); }
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; }