【unity】给物体加上collider碰撞器,以及触发的OnCollisionEnter等碰撞方法

本文详细介绍Unity中物体碰撞的实现方式,包括六种碰撞器的使用,如何为模型自动生成碰撞器,以及碰撞检测的方法。文章还讲解了碰撞器与刚体的关系,以及不同碰撞事件的触发条件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在unity中需要两个物体能相互碰撞,就需要给它加上碰撞器(collider)

1.添加碰撞器组件

选中需要加collider的物体,在inspector面板,然后点击Add Component–Physics,可以看到有六种collider,分别是

Box Collider(盒碰撞器)
Sphere Collider(椭圆碰撞器)
Capsule Collider(胶囊碰撞器)
Wheel Collider(车轮碰撞器)
Mesh Collider(网格碰撞器)
Terrain Collider(地形碰撞器)

添加collider之后可以设置它们的参数

Mesh Collider效果更好,可以比较精细,但是占用电脑资源更多

需要注意的是,
碰撞器(Collider)不需要刚体(Rigidbody)
刚体(Rigidbody)要发生碰撞,一定需要碰撞器(Collider)
没有碰撞器的刚体(Rigidbody),会在场景中可以相互穿透

2.直接给导入的fbx资源加上collider

为了方便,我们可以直接给导入的fbx模型生成collider
在project面板选中fbx,在它的inspector面板的Model一栏,勾选“Generate Colliders”,再点Apply就可以生成合适的mesh collider了
勾选generate collider

3.碰撞方法

测试的两个物体,都加上Collider和Rigidbody,然后把脚本添加上,当它们相碰撞的时候就会触发对应的方法了

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

public class collider : MonoBehaviour {

	// Use this for initialization
	void Start () {
		
	}
	
	// Update is called once per frame
	void Update () {
		
	}

    private void OnCollisionEnter(Collision collision) {
        Debug.Log("开始碰撞:" + collision.collider.gameObject.name);
    }

    private void OnCollisionStay(Collision collision) {
        Debug.Log("持续碰撞:" + collision.collider.gameObject.name);
    }

    private void OnCollisionExit(Collision collision)
    {
        Debug.Log("结束碰撞:" + collision.collider.gameObject.name);
    }
}

还需要注意的是,碰撞的两个物体只要勾选一个isTrigger那么就能进入OnTriggerEnter方法,OnCollisionXXXX()和OnTriggerXXXX()是不能同时存在的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冰冷的希望

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值