【unity】給物體加上collider碰撞器,以及觸發的OnCollisionEnter等碰撞方法

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章