【问题标题】:Recognizing a specific objects collision in Unity在 Unity 中识别特定对象碰撞
【发布时间】:2019-01-22 04:43:54
【问题描述】:

我一直在试图弄清楚如何检测碰撞以制作一个简单的战斗系统,但命令也没有返回我想要的内容。我现在正在使用的(在统一引擎中):

using UnityEngine;

public class swordDetect : MonoBehaviour
{
    void OnCollisionEnter(UnityEngine.Collision CollisionInfo)
    {
        if (CollisionInfo.gameObject.name == "swordCollide")
        {
            Debug.Log("it work again");
        }
    }
}

这并没有返回任何东西,它附着在一块我用来测试它的岩石上。

swordCollide 对象附着在玩家的剑上,但当它与岩石碰撞时没有任何反应。

【问题讨论】:

  • 如果您也使用您的编程语言进行标记,您可能会收到更多回复。
  • @Nick 我实际上不这么认为。这个问题是 Unity 特有的,额外的 c# 标签可能并没有真正的帮助。无论如何,首选(并且在最新的 Unity 版本中仅支持)语言是 c#,所以我认为它不会比 Unity3d 标签目前吸引更多人的注意力。
  • swordCollide 唯一带有Collider 的对象吗?否则您可能会在CollisionInfo.gameObject 中获得父对象或其他对象

标签: unity3d


【解决方案1】:

确保你的游戏对象上有一个碰撞器,它没有设置为触发(因为那样它就不能接收碰撞,而只会触发)。我总是宁愿标记我的游戏对象并检查标记而不是名称,因为它不容易出错。如果碰撞的Gameobject是Trigger,则需要勾选

private void OnTriggerEnter(Collider other){}

最好观看有关碰撞的 Unity 教程https://unity3d.com/learn/tutorials/topics/physics/colliders?playlist=17120 并查看文档https://docs.unity3d.com/ScriptReference/Collider.html

两者都很容易理解并带有一些示例代码

【讨论】:

    猜你喜欢
    • 2018-02-18
    • 2022-07-20
    • 2014-05-31
    • 1970-01-01
    • 2015-12-04
    • 2015-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多