C# 如何在统一的特定方向上对物体施加力

C# 如何在统一的特定方向上对物体施加力,c#,ios,unity3d,unityscript,C#,Ios,Unity3d,Unityscript,我正在使用unity来开发我的游戏。我通过计算触屏的起始位置和结束位置,做出了一个自定义的滑动手势。我通过减去两个位置得到矢量方向,并成功地调试了它 但是,当涉及到对我的游戏对象施加力时,我在尝试了很多之后并没有获得任何成功 以下是我正在做的: swipeDirection = new Vector3(endPos.x - startPos.x,0f, endPos.z - startPos.z); swipeDirection.Normalize(); Debug.Log("The dir

我正在使用unity来开发我的游戏。我通过计算触屏的起始位置和结束位置,做出了一个自定义的滑动手势。我通过减去两个位置得到矢量方向,并成功地调试了它

但是,当涉及到对我的游戏对象施加力时,我在尝试了很多之后并没有获得任何成功

以下是我正在做的:

swipeDirection = new Vector3(endPos.x - startPos.x,0f, endPos.z - startPos.z);

swipeDirection.Normalize();

Debug.Log("The direction is "+ swipeDirection);

ball.rigidbody.AddForce(swipeDirection * 5);

球只是一个游戏对象。每当我在我的iPhone上运行它时,游戏在第一次刷卡后就会被卡住,并给出一个EXC\u BAD\u访问代码。

所以我只是测试了你的代码。它是有效的。你可能遇到的问题是,这些数字很可能非常小,你需要很大的力量才能明显地移动它。试着把你的5号换成1000号或者更大的,这样你就可以看到变化了。这是我的代码,刚刚添加到带有刚体的球上

void Start ()
    {
            Vector3 dir = new Vector3 (100f, 0f, 0f);
            dir.Normalize ();
            this.gameObject.rigidbody.AddForce (dir * 100);
    }
几乎一样。你只需要把倍增器放大到可以看到的程度。
祝你好运。

EXC\u BAD\u访问通常是未捕获的NullReferenceException。是
ball
还是
ball.rigidbody
null?例如,如果您没有查找“球”,或者球没有附加刚体组件。在编辑器上运行时可能会出错。我是否必须始终在固定更新方法中应用强制?