其实很简单,难者不会,会者不难。用经典的话就是,书山有路勤为径,学海无涯苦作舟。
网上百度到的都是3d碰撞,我要做2d,抄了代码怎么都没有反应,最后发现,只要加上2d就好。
最终解决办法:加上rigidbody2d,collider2d。如果要碰撞效果,去掉is trigger,如果要穿透效果,勾选。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class collder : MonoBehaviour {
// public Sprite sprite;
// public GameObject gObj;
private int collisionGlg=0;
// Use this for initialization
void Start () {
//gObj.GetComponent<PolygonCollider2D>();
//gObj.AddComponent<Sprite>;
}
// 碰撞开始
void OnCollisionEnter2D(Collision2D collision) {
var name = collision.collider.name;
Debug.Log("Enter OnCollisionEnter2D Name is " + name);
// 销毁当前游戏物体
// Destroy(this.gameObject);
}
// 碰撞结束
void OnCollisionExit2D(Collision2D collision) {
var name = collision.collider.name;
Debug.Log("End OnCollisionExit Name is " + name);
}
// 碰撞持续中
void OnCollisionStay2D(Collision2D collision) {
var name = collision.collider.name;
Debug.Log("State OnCollisionStay Name is " + name);
collisionGlg += 1;
if(collisionGlg==10){
Destroy(this.gameObject);
}
}
// 开始接触
void OnTriggerEnter2D(Collider2D collider) {
Debug.Log("开始接触");
}
// 接触结束
void OnTriggerExit2D(Collider2D collider) {
Debug.Log("接触结束");
}
// 接触持续中
void OnTriggerStay2D(Collider2D collider) {
Debug.Log("接触持续中 name:" + collider.name);
}
}