Unity CollisionOnEnter 未检测到

问题描述 投票:0回答:0
`using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MovePuck : MonoBehaviour
{
    public float speed = 1.0f;
    public Vector3 movement;
    public Rigidbody rb;
    // Start is called before the first frame update
    void Start()
    {
        rb = GetComponent<Rigidbody>();
    }

    // Update is called once per frame
    void Update()
    {
        rb.AddForce(movement * speed);
    }

    void onCollisionEnter(Collision collision) {
        if (collision.gameObject.tag == "Player") {
            movement = movement * -1;
            Debug.Log("Collided!");
        }
    }
}`

我创建了一个冰球,它最初朝“运动”方向移动;如果冰球击中一个球(“Player”),那么它会向相反的方向移动,并且控制台应该打印“Collided”!我认为这应该可以,但是控制台没有打印出任何东西;我为两个对象都添加了一个 Collider,为两个对象都关闭了“Is Trigger”,为两个对象都关闭了“Is Kinematic”,并且两个对象都有 RigidBodies;我还多次检查以确保 Player 对象具有标签“Player”。为什么它不起作用?有什么我需要补充的吗?

我试过查看各种来源,每个来源都建议确保两个对象都有 Colliders,两个对象都没有打开“Is Trigger”,并且至少有一个对象有 RigidBody;这一切都应验了。我对自己做错了什么感到很困惑。

c# unity3d
© www.soinside.com 2019 - 2024. All rights reserved.