关于碰撞检测的问题

本文关键字:问题 碰撞检测 | 更新日期: 2023-09-27 18:04:47

不知道为什么我的碰撞没有导致我的控制台打印出"我击中敌人"。玩家有刚体组件,敌人没有。

我的敌人有tag敌人。敌人正在使用变形移动。我的玩家拥有刚体成分,而我的敌人却没有。什么好主意吗?

using UnityEngine;
using System.Collections;
public class PlayerMovement : MonoBehaviour {
public float moveSpeed;
public float maxSpeed = 5f;
private Vector3 input;
private Rigidbody rb;
// Use this for initialization
void Start () {
    rb = GetComponent<Rigidbody>();
}
// Update is called once per frame
void Update () {
    input = new Vector3(Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw("Vertical"));
    if (rb.velocity.magnitude < maxSpeed) {
        rb.AddForce(input * moveSpeed);
    }      
}
void onCollisionEnter(Collision other)
{
    if (other.transform.tag == "Enemy")
    {
        print ("I hit enemy");
    }
}
}

关于碰撞检测的问题

这是Unity新用户的一个简单错误。拼写算上!只需将onCollisionEnter替换为OnCollisionEnter。回调函数区分大小写,它们的第一个字母通常是大写的

如果改变这个不工作,附加刚体到你的敌人也。确保它们都有Colliders附加到它们上,并且IsTrigger不是enabled

可以有几种解决方案。也许你只是忘了给你的敌人设置标签?请查看Unity3D碰撞矩阵(https://docs.unity3d.com/Manual/CollidersOverview.html -在页面底部)。

碰撞矩阵告诉您何时将获得碰撞消息。例如,你不能让静态碰撞器与刚体碰撞器发生碰撞。重新检查所有的游戏对象。它们符合碰撞的需要吗?