Unity 3D。当另一个对象进入时,如何向上移动对象

时间:2016-10-16 06:40:14

标签: c# unity3d

我有对象"球"可以在表面上滚动。还有对象"平台"。所以,只有当球停在平台上时,我才需要平台一段距离。

C#上的脚本。

2 个答案:

答案 0 :(得分:0)

很好 - 我不知道Unity API有什么:),但我知道它必须有可用的属性" position"。所以解决问题的方法之一 - 检查每个更新中球的位置(与之前位置相比),以及当它的位置变得稳定(相同)一段时间(一段时间)时 - 移动平台

类似的东西:

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()
}

答案 1 :(得分:0)

你需要在这里找出两件事。

  • 球停了吗?
  • 是平台上的球

要识别球是否停止,只需跟踪其当前速度(使用分配给球对象的speed属性)。我假设你可能已经拥有这个,因为球员会控制球?如果是,请检查speed == 0

要检查球是否在平台上,您需要使用对撞机。看看2d或3d物理(你没有指定你使用的是什么),并在平台和球上应用一些合适的碰撞器。您现在可以以编程方式检查两个对象之间的冲突。有很多关于物体碰撞的教程,所以我不会在这里讨论它,但this可能是一个很好的起点。