统一的3 d.当另一个物体在它上面时,我如何移动它

本文关键字:何移动 移动 另一个 | 更新日期: 2023-09-27 18:13:11

我有一个可以在表面上滚动的对象"ball"。还有一个对象是"平台"。所以,我需要把平台抬高一定的距离,只有当球停在平台上时。

统一的3 d.当另一个物体在它上面时,我如何移动它

老实说-我不知道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物理(你没有指定你使用的是哪个),并在平台和球上应用一些适当的碰撞器。现在你可以通过编程检查两个对象之间的碰撞。有很多关于物体碰撞的教程,所以我不会在这里展开,但这可能是一个很好的开始。