我试图乘电梯,但我遇到了我无法解释的事情。
这是场景:
一旦我将我的对象(在本例中为立方体)放在电梯上,它就会上下移动。 如果物体停在坐骑上而没有移动并等待下一次坐骑,则当电梯从地面返回时,碰撞将停止。
如果物体在电梯回来时移动,一切都很好,而物体又去了一次。
有人可以向我解释为什么会这样吗,对此有解决办法吗?
该平台一旦穿过地面,便会穿过地面并拾取物体。 (想像一下,不是所有要使用轿厢升降机的人)
我很想添加脚本DontGoThroughThings.cs。它也不起作用。
这是我为电梯上下升降而编写的脚本。
Elevator.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Elevator: MonoBehaviour {
public float speed;
public float distance;
private bool goingUp;
void Start () {
goingUp = true;
}
void Update () {
var currentPosition = transform.position;
currentPosition.y = goingUpDown(currentPosition.y);
transform.position = currentPosition;
}
private float goingUpDown(float currentPosition)
{
if (goingUp)
currentPosition += speed;
else
currentPosition -= speed;
if (currentPosition > distance / 2)
goingUp = false;
if (currentPosition < -distance / 2)
goingUp = true;
return currentPosition;
}
}
如果您需要更多信息,请发表评论。谢谢
答案 0 :(得分:2)
您需要将RigidBody添加到电梯对象,然后在其上选中“是运动学”选项。
从Unity文档RigidBody Manual:
是运动学的:如果启用,则该对象将不会由物理引擎驱动,只能由其 Transform 进行操作。这对于 移动平台 很有用,或者如果您要为附加了 HingeJoint 的刚体制作动画。