我有对象"球"可以在表面上滚动。还有对象"平台"。所以,只有当球停在平台上时,我才需要平台一段距离。
C#上的脚本。
答案 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可能是一个很好的起点。