如果物体没有移动,对撞机将无法工作

时间:2018-08-24 23:36:52

标签: c# unity3d collision

我试图乘电梯,但我遇到了我无法解释的事情。

这是场景:

一旦我将我的对象(在本例中为立方体)放在电梯上,它就会上下移动。 如果物体停在坐骑上而没有移动并等待下一次坐骑,则当电梯从地面返回时,碰撞将停止。

如果物体在电梯回来时移动,一切都很好,而物体又去了一次。

有人可以向我解释为什么会这样吗,对此有解决办法吗?

该平台一旦穿过地面,便会穿过地面并拾取物体。 (想像一下,不是所有要使用轿厢升降机的人)

我很想添加脚本DontGoThroughThings.cs。它也不起作用。

这是检查员的屏幕截图。 enter image description here

这是我为电梯上下升降而编写的脚本。

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;
    }
}

如果您需要更多信息,请发表评论。谢谢

1 个答案:

答案 0 :(得分:2)

您需要将RigidBody添加到电梯对象,然后在其上选中“是运动学”选项。

从Unity文档RigidBody Manual

是运动学的:如果启用,则该对象将不会由物理引擎驱动,只能由其 Transform 进行操作。这对于 移动平台 很有用,或者如果您要为附加了 HingeJoint 的刚体制作动画。