如何在Unity 3D中移动球体一段距离?

时间:2012-06-19 13:35:42

标签: c# unity3d geometry physics collision

我只是想与球体发生碰撞。我有两个球体,其中一个移动到另一个球体。开始时它们之间有一个距离,让我们说距离是5.(比如说球1和球2)。当sphere1击中sphere2时,sphere2必须只移动5个单位。这个碰撞必须根据物理规则实现。如何我可以这样做吗?我尝试了很多东西,但我对团结3D很新。因为我无法找到方法。谢谢你的帮助。

2 个答案:

答案 0 :(得分:1)

为了理解物理学,并且在任何距离做同样的事情,我认为你需要使用sphere1加速向sphere2,(或者开始时有足够的能量去10个单位加上它经历的任何摩擦)在立即停止时转移所有能量,然后你需要使用sphere2在击中后以相同的速率减速。

使用简化或卡通化的物理学来移动它可能更简单,就像球体以恒定的速率移动直到它们已经走了必要的距离。

答案 1 :(得分:0)

你有没有试过像:

using UnityEngine;
using System.Collections;

public class MovingSphere : Monobehavior // Attatch to sphere1
{
    public GameObject sphere1, sphere2; // Set these in the inspector
    // Say sphere1 is at (-2, 0, 0)
    // Say sphere2 is at ( 0, 0, 0)

    void Update( )
    {
        if(sphere2.transform.position.x < 5) // If x-position of sphere2 < 5
        {
            sphere1.transform.Translate(0.1f, 0, 0); // Moves the first sphere
        }                                            // positively on the x-plane
    }
}

我刚刚写了这个,所以它没有经过测试......但它应该是这样的:

START SCENE:

 [x] [-2] [-1] [00] [+1] [+2] [+4] [+5]
(s1)           (s2)

 [x] [-2] [-1] [00] [+1] [+2] [+4] [+5]
     (s1)      (s2)

 [x] [-2] [-1] [00] [+1] [+2] [+4] [+5]
          (s1) (s2)

 [x] [-2] [-1] [00] [+1] [+2] [+4] [+5]
               (s1) (s2)

 [x] [-2] [-1] [00] [+1] [+2] [+4] [+5]
                    (s1) (s2)

 [x] [-2] [-1] [00] [+1] [+2] [+4] [+5]
                         (s1) (s2)

 [x] [-2] [-1] [00] [+1] [+2] [+4] [+5]
                              (s1) (s2) <Stop>

如果第二个球体在击中时发疯,则可能需要锁定y轴和z轴,可以在检查器窗口中使用一个小复选框完成。

如果您还需要更多信息,请告诉我们!