【发布时间】:2019-07-17 12:20:50
【问题描述】:
我有一个游戏对象,当玩家选择力和方向时,会使用physics.simulate 绘制运动轨迹线和结束位置。如果我每 0.5f 秒使用一次,效果很好,但我必须每帧预测轨迹和结束位置,但游戏会滞后。如何预测每一帧的轨迹和结束位置?
private IEnumerator destcor()
{
while (true)
{
yield return new WaitForSeconds(0.3f);
touchhandler.listofcoll.Clear();
touchhandler.force = (float)Math.Pow(distanceToRoller, 3);
touchhandler.RollerMove();
endpos = touchhandler.CheckPosition(rollerobj.GetComponent<Rigidbody>());
destination.transform.position = endpos;
}
}
public Vector3 CheckPosition(Rigidbody defaultRb)
{
Physics.autoSimulation = false;
defaultRb = GetComponent<Rigidbody>();
Vector3 defaultPos = defaultRb.position;
Quaternion defaultRot = defaultRb.rotation;
float timeInSec = timeCheck;
while (timeInSec >= Time.fixedDeltaTime)
{
timeInSec -= Time.fixedDeltaTime;
Physics.Simulate(Time.fixedDeltaTime);
}//end while
Vector3 futurePos = defaultRb.position;
Physics.autoSimulation = true;
defaultRb.velocity = Vector3.zero;
defaultRb.angularVelocity = Vector3.zero;
defaultRb.transform.position = defaultPos;
defaultRb.transform.rotation = defaultRot;
return futurePos;
}
【问题讨论】: