给物体t添加碰撞器如图(创建2d游戏时一定要创建2d的碰撞器);若将is Trigger勾选则为触发器,我是这么理解的。
在游戏开发时有时候后遇到一个物体碰到一个物体时会发生什么例如:敌人碰到敌人;
碰撞器方法
private void OnCollisionEnter2D(Collision2D collision)
{
switch(collision.transform.tag)
{
case "invincible":
invincibleprop = true;
invincibleTime = 6f;
break;
case "ironBase":
PlayerManage.Instance.ironBase = true;
PlayerManage.Instance.ironBaseTime = 10f;
break;
case "resuse":
PlayerManage.Instance.lifeValue2++;
break;
default:
break;
}
}
方法private void OnCollisionEnter2D(Collision2D collision) //当挂载物体进入物体时进行(或者碰到,我是这么认为的)
此方法必须两个物体都添加碰撞器组件;is Trigger不勾选,在写collision时调用物体身上的脚步属性时要加transform;
一般我会该不同的预制体添加标签进行判断;
触发器方法
private void OnTriggerEnter2D(Collider2D collision)
{
switch(collision.tag)
{
case "Tank1":
if (!isPlayerBullect)
{
collision.SendMessage("Die");
Destroy(gameObject);
}
break;
case "Tank2":
if (!isPlayerBullect)
{
collision.SendMessage("Die");
Destroy(gameObject);
}
break;
case "Heart":
collision.SendMessage("Die");
Destroy(gameObject);
break;
case "Enemy":
if (isPlayerBullect)
{
collision.SendMessage("Die");
Destroy(gameObject);
}
break;
case "Wall":
Destroy(collision.gameObject);
Destroy(gameObject);
break;
case "Barriar":
Destroy(gameObject);
break;
default:
break;
}
}
触发器方法:private void OnTriggerEnter2D(Collider2D collision) //当物体进入到某物体时实现
首先is Trigger勾选则为触发器,当物体挂载触发器时,物体可以穿过挂载有碰撞器方法的物体;
一般我会将这种方法用到子弹这种东西的身上,因为子弹可以穿过一些东西,某些穿不过的东西时,让子弹销毁就行;
补充:
物体添加碰撞器时就不能彼此穿过,有时候你想让主角限制在一定方位内时,你可以让周围有一些挂载这碰撞器的墙,这样就可以限制住主角的移动范围。