为什么我的碰撞没有检测到统一

问题描述

所以现在我被困住了。我想用我的代码制作一条传送带,但遇到了这个问题。我找到了这段代码

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

public class ConveyorPush : MonoBehavIoUr {
    public float speed = 3.0f;
    void OnTriggerStay(Collider other) {

        // Assign veLocity based upon direction of conveyor belt
        // Ensure that conveyor mesh is facing towards its local Z-axis
        float conveyorVeLocity = speed * Time.deltaTime;
        Rigidbody rigidbody = other.gameObject.GetComponent<Rigidbody>();
        rigidbody.veLocity = conveyorVeLocity * transform.forward;
    }
}   

我理解这一点,但是由于某种原因,我在传送带上的扳机对撞机没有检测到具有刚性的非触发对撞机与小精灵的碰撞。

解决方法

    void OnCollisionEnter(Collision collisionInfo)
    {
        if (collisionInfo.collider.tag == "Obstacle")
        {
            movement.enabled = false;
            FindObjectOfType<GameManager>().GameOver();
            rb.useGravity = false;
            rb.AddExplosionForce(1000,transform.position,200);
        }

    }

当您在函数中定义对撞机时,您并没有在任何地方使用它

如果您使用2d,则应该使用2d对撞机

    void OnCollisionEnter(Collision2D collisionInfo)
    {
        if (collisionInfo.collider.tag == "Obstacle")
        {
            movement.enabled = false;
            FindObjectOfType<GameManager>().GameOver();
            rb.useGravity = false;
            rb.AddExplosionForce(1000,200);
        }

    }

Collision和Collision2D是您必须定义的类型