我只是想与球体发生碰撞。我有两个球体,其中一个移动到另一个球体。开始时它们之间有一个距离,让我们说距离是5.(比如说球1和球2)。当sphere1击中sphere2时,sphere2必须只移动5个单位。这个碰撞必须根据物理规则实现。如何我可以这样做吗?我尝试了很多东西,但我对团结3D很新。因为我无法找到方法。谢谢你的帮助。
答案 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轴,可以在检查器窗口中使用一个小复选框完成。
如果您还需要更多信息,请告诉我们!