统一的3 d.当另一个物体在它上面时,我如何移动它
本文关键字:何移动 移动 另一个 | 更新日期: 2023-09-27 18:13:11
我有一个可以在表面上滚动的对象"ball"。还有一个对象是"平台"。所以,我需要把平台抬高一定的距离,只有当球停在平台上时。
老实说-我不知道Unity API的任何东西:),但我知道它必须有可用的属性"位置"。所以解决你的问题的方法之一-检查球的位置在每次更新(与以前的位置比较),当它的位置变得稳定(相同)一段时间(一段时间)-移动平台。
类似:
private Vector3 lastPosition;
private stableTime = 0;
public float distThreshold = 0.1;
public float timeThreshold = 0.1;
void FixedUpdate() {
if (lastPoistion == null || Vector3.Distance(ball.position, lastPoistion) > distThreshold) {
lastPosition = ball.position;
stableTime = 0;
}
else
stableTime += Time.deltaTime;
if (stableTime > timeThreshold)
platform.MovePoistion()
}
你需要在这里确定两件事。
- 球停了吗?
- 是平台上的球
要识别球是否停止,只需跟踪它的当前速度(使用分配给球对象的speed
属性)。我假设你可能已经有了这个,因为玩家将控制球?如果是,请检查speed == 0
。
要检查球是否在平台上,你需要使用碰撞器。看看2d或3d物理(你没有指定你使用的是哪个),并在平台和球上应用一些适当的碰撞器。现在你可以通过编程检查两个对象之间的碰撞。有很多关于物体碰撞的教程,所以我不会在这里展开,但这可能是一个很好的开始。