欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-07-02 09:59:37
...

在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了
【unity】给物体加上collider碰撞器,以及触发的OnCollisionEnter等碰撞方法

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()是不能同时存在的

相关标签: unity 游戏开发