简体   繁体   English

如何检测碰撞以阻止 Unity 中的玩家移动?

[英]How to detect collision to stop player movement in Unity?

I'm a beginner and I want to know how to make player stops movement when hitting an obstacle.我是初学者,我想知道如何让玩家在遇到障碍物时停止运动。 I tried this code but it shows that it's deprecated我试过这段代码,但它表明它已被弃用

public class Collision : MonoBehaviour
{
    public PlayerMove move;

    void onCollisionEnter (Collision info)
    {
        if (info.Collider.tag == "Obstacle")
        {
            move.enabled = false;
        }
    }
}

You named your class Collision .您将 class Collision命名为。 The parameter info in the OnCollisionEnter method doesn't use UnityEngine.Collision but your own Collision class. OnCollisionEnter 方法中的参数info不使用UnityEngine.Collision而是您自己的Collision class。

Change your class name Collision to something else:将您的 class 名称Collision更改为其他名称:

public class Collision : MonoBehaviour public class碰撞: MonoBehaviour

public class MyCollision: MonoBehaviour

Be careful with methods in Unity, they start with an Uppercase.注意 Unity 中的方法,它们以大写字母开头。

OnCollisionEnter should start with an Uppercase to be recognized by Unity as the method called once per collision. OnCollisionEnter应该以大写字母开头,以便 Unity 将其识别为每次碰撞调用一次的方法。

As scopolamin said, don't call your class Collision : you'd better rename it as well as your file, your class name and your file name must match in order to inherit from a MonoBehaviour.正如scopolamin所说,不要调用您的 class Collision :您最好重命名它以及您的文件,您的class 名称和您的文件名必须匹配才能从 MonoBehaviour 继承。

I assume PlayerMove is the script you use as a character controller.我假设PlayerMove是您用作角色 controller 的脚本。 Be sure your variable move has the right script attached.确保您的变量move附加了正确的脚本。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM