【问题标题】:Game object does nothing on collide游戏对象在碰撞时不执行任何操作
【发布时间】:2020-12-15 20:13:00
【问题描述】:

伙计们!我是游戏开发的新手,也是统一引擎的新手,所以也许这个问题很愚蠢,但是当球与平台碰撞时我需要启动“菜单”场景,但它什么也没做。我不知道触发器和对撞机。我已经阅读了 2 个小时,但仍然无法解决问题。

unity inspector settings

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class LoseCollider : MonoBehaviour
{
    private void OnTriggerEnter2D(Collider2D col)
    {
        Debug.Log("hey " + col.name);
        SceneManager.LoadScene("Menu");
    }
}

【问题讨论】:

  • 选中相关对撞机上的“Is Trigger”复选框。
  • 请包括其他对象的检查员
  • 当然它不会触发 ontrigger2d。您没有将其设置为触发器

标签: c# unity3d game-development 2d-games


【解决方案1】:

回答

选中 Collider 组件中的 Is Trigger 框。

推理

您必须这样做的原因是因为 Unity 有 2 种碰撞“模式” - 正常碰撞 (OnCollisionEnter) 和触发碰撞 (OnTriggerEnter)。这两者的区别在于 Normal 碰撞检查碰撞并与对象交互(无脚本),而 Trigger Collision 只检查碰撞而不与对象交互。这两种“模式”是不可互换的——你不能使用正常碰撞模式并选中 Is trigger 框(因为 Unity 只会检查正常碰撞),并且你不能使用 Trigger 碰撞模式而不选中 Is Trigger 框(Unity只会检查触发冲突)。

一些有用的链接

https://docs.unity3d.com/ScriptReference/Collider.html https://docs.unity3d.com/ScriptReference/Collider.OnTriggerEnter.html

希望你觉得这很有用:)

【讨论】:

  • 这对我很有帮助!非常感谢!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-26
相关资源
最近更新 更多