【问题标题】:Why is my collision not detecting (unity)为什么我的碰撞没有检测到(统一)
【发布时间】:2020-11-05 03:46:52
【问题描述】:

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

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

我明白,但由于某种原因,我在传送带上的触发碰撞器没有检测到精灵与具有刚体的非触发碰撞器的碰撞。

【问题讨论】:

标签: c# unity3d debugging collision-detection collision


【解决方案1】:
    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 collider

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

    }

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

【讨论】:

    猜你喜欢
    • 2019-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-13
    相关资源
    最近更新 更多