/* * private IEnumerator MoveSmooth() * { * var netPos = networkMove.GetServerPos(); * var curPos = GetAttr().transform.position; * Log.AI("MoveSmooth:"+netPos+":"+curPos); * var tarDir = netPos - curPos; * tarDir.y = 0; * * var speedCoff = MobaUtil.GetSpeedCoff(curPos, netPos); * var oriSpeed = aiCharacter.GetAttr().GetSpeed() * speedCoff; * var mdir = tarDir.normalized; * physics.TurnTo(mdir); * var sp = mdir * oriSpeed; * * var passTime = 0.0f; * var totalTime = tarDir.magnitude / oriSpeed; * //不要玩家预测移动之后又回头 最终停下来的时候 * if (totalTime > 0.1f) * { * while (!quit && passTime < totalTime) * { * passTime += Time.deltaTime; * var newPos = Vector3.Lerp(curPos, netPos, Mathf.Clamp01(passTime / totalTime)); * physics.MoveToIgnorePhysic(newPos); * yield return null; * } * }else * { * yield return null; * } * //var newPos = GetAttr().transform.position + sp * Time.deltaTime; * } */ /// <summary> /// 自己玩家正常速度移动 /// </summary> private void MoveByNet() { var netPos = networkMove.GetServerPos(); var curPos = GetAttr().transform.position; var tarDir = netPos - curPos; tarDir.y = 0; var deltaDist = tarDir.magnitude; var speedCoff = MobaUtil.GetSpeedCoff(curPos, netPos); var oriSpeed = aiCharacter.GetAttr().GetSpeed() * speedCoff; /* * var sp = tarDir / Util.FrameSecTime; * var mag = sp.magnitude; * if(mag > oriSpeed*2) * { * mag = oriSpeed*2; * } */ Log.AI("MoveMe:" + curPos + ":" + netPos + ":" + networkMove.GetServerVelocity() + ":" + networkMove.GetCurInfoPos() + ":" + networkMove.GetCurInfoSpeed()); /* * var dist = tarDir.magnitude; * var serverVel = networkMove.GetServerVelocity(); * if (!MobaUtil.IsServerMove(serverVel) && dist < 1) * { * return; * } */ var mdir = tarDir.normalized; var netDir = MobaUtil.GetNetTurnTo(vcontroller.inputVector, mdir, deltaDist, physics.transform.forward); physics.TurnTo(netDir); if (Mathf.Abs(deltaDist) < 0.1f) { } else { //sp = mdir * mag; //var speed2X = speed * 2; var sp = mdir * oriSpeed; var newPos = GetAttr().transform.position + sp * Time.fixedDeltaTime; physics.MoveToIgnorePhysic(newPos); } //physics.MoveToIgnorePhysic(newPos); }
public static bool IsServerMoveBySpeedOrPos(ISyncInterface sync) { var speed = sync.GetServerVelocity(); if (IsServerMove(speed)) { return(true); } var pos = sync.GetServerPos(); var posDelta = IsNetMove(pos, sync.transform.position); return(posDelta); }
private void MoveByNet() { var netPos = networkMove.GetServerPos(); var curPos = GetAttr().transform.position; var tarDir = netPos - curPos; tarDir.y = 0; var mdir = tarDir.normalized; physics.TurnTo(mdir); var speed = aiCharacter.GetAttr().GetSpeed(); var sp = mdir * speed; var newPos = GetAttr().transform.position + sp * Time.deltaTime; physics.MoveToIgnorePhysic(newPos); }