关于碰撞检测的问题
本文关键字:问题 碰撞检测 | 更新日期: 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 -在页面底部)。
碰撞矩阵告诉您何时将获得碰撞消息。例如,你不能让静态碰撞器与刚体碰撞器发生碰撞。重新检查所有的游戏对象。它们符合碰撞的需要吗?