【问题标题】:How to apply force to an object in a particular direction in Unity如何在 Unity 中向特定方向的对象施加力
【发布时间】:2014-01-28 20:22:13
【问题描述】:

我正在使用统一来开发我的游戏。我通过计算触摸的 startPosition 和 end Position 来制作自定义滑动手势。两个位置相减得到向量方向,调试成功。

但是在对我的游戏对象施加力时,我尝试了很多之后都没有取得任何成功。

这就是我正在做的事情:

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_BAD_ACCESS 代码。

【问题讨论】:

  • EXC_BAD_ACCESS 通常是未捕获的 NullReferenceException。 ballball.rigidbody 是否为空?例如,如果您尚未查找“球”,或者该球没有附加刚体组件。
  • 在编辑器上运行时可能会出错。
  • 我是否必须始终以固定的更新方法强制执行?

标签: c# ios unity3d


【解决方案1】:

所以我刚刚测试了您的代码。它有效。您可能遇到的这个问题是这些数字很可能非常小,并且您需要很大的力量才能显着移动它。尝试将您的 5 更改为 1000 或更大的值,这样您就可以清楚地看到变化。这是我的代码,刚刚添加到刚体的球中。

void Start ()
    {
            Vector3 dir = new Vector3 (100f, 0f, 0f);
            dir.Normalize ();
            this.gameObject.rigidbody.AddForce (dir * 100);
    }

几乎相同。你只需要使乘数足够大就可以看到。 祝你好运。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多