C# 流畅的球运动(统一)

C# 流畅的球运动(统一),c#,unity3d,C#,Unity3d,我正在开发一个简单的三维球游戏。球移动不平稳 while (i < Input.touchCount) { if(Input.GetTouch(i).position.y < ScreenHeight / 2) { if (Input.GetTouch(i).position.x > ScreenWidth / 2) {

我正在开发一个简单的三维球游戏。球移动不平稳

while (i < Input.touchCount)
        {
            if(Input.GetTouch(i).position.y < ScreenHeight / 2)
            {
                if (Input.GetTouch(i).position.x > ScreenWidth / 2)
                {
                    //move right
                    rigidBody.velocity += new Vector3(0.75f, 0, 0);

                }
                if (Input.GetTouch(i).position.x < ScreenWidth / 2)
                {
                    //move left
                    rigidBody.velocity -= new Vector3(0.75f, 0, 0);

                }
            }
            ++i;
        }
while(iScreenWidth/2)
{
//右移
刚体速度+=新矢量3(0.75f,0,0);
}
if(Input.GetTouch(i.position.x
你们可以看到,我使用了刚体的速度,它开始缓慢,然后快速。但我希望球在触摸屏幕后立即以恒定速度移动。 此外,它的移动也有急促,不平稳。
您能帮我改进一下吗?

请记住,物理计算需要在
FixedUpdate()事件方法中进行:

来自

与帧速率无关的MonoBehavior.FixedUpdate消息,用于物理计算

MonoBehavior.FixeUpdate具有物理系统的频率;它被称为每个固定帧速率帧。在固定更新后计算物理系统计算。0.02秒(每秒50次呼叫)是两次呼叫之间的默认时间。使用Time.FixedDelatime访问此值

参考文献:


希望能有所帮助。

请记住,物理计算需要在
fixeupdate()事件方法中进行:

来自

与帧速率无关的MonoBehavior.FixedUpdate消息,用于物理计算

MonoBehavior.FixeUpdate具有物理系统的频率;它被称为每个固定帧速率帧。在固定更新后计算物理系统计算。0.02秒(每秒50次呼叫)是两次呼叫之间的默认时间。使用Time.FixedDelatime访问此值

参考文献:


希望它能有所帮助。

如果你想让它以恒定的速度移动,你应该使用常规赋值:
=
而不是
-=
+=
。所以它是刚体。速度=新向量(x,y,z)
,我必须提到,球只是停留在原地,只在x轴上移动。它不在y轴上移动,因为向量中的y值是0。值得一提的是,球使用刚体,所以物理将发挥作用。每个帧上的所有+=和-=都可能不理想(除非GetTouch类似于GetKeyDown),因为它将继续加速球。我建议做“纪事报”,然后可能进入刚体属性,把球设置成Kinematic,这样外力就不与它交互。“嗨,”戴维里克考虑用勒平来让一个动作平稳地运行,看看你是否希望它以恒定的速度移动,您应该使用常规作业:
=
而不是
-=
+=
。所以它是刚体。速度=新向量(x,y,z)
,我必须提到,球只是停留在原地,只在x轴上移动。它不在y轴上移动,因为向量中的y值是0。值得一提的是,球使用刚体,所以物理将发挥作用。每个帧上的所有+=和-=都可能不理想(除非GetTouch类似于GetKeyDown),因为它将继续加速球。我建议做“@纪事报”,然后可能进入刚体属性,把球设置成Kinematic,这样外力就不会与它交互。“嗨,”戴维里克考虑用勒平来让运动顺利进行。