记学习Unity后第三次做游戏
上一节写完了敌人和玩家上面的脚本,这次我们来写出生点的逻辑和其他脚本。
首先看子弹的脚本,子弹要可以移动,向固定位置发射,碰撞到对应的物体要做出相应的操作。比如撞到墙了就要同时摧毁墙和子弹,而且要有子弹发射的声音和撞到墙的声音,等等。所以就要加上碰撞体,但是子弹又不能推走坦克,就把IsTrigger
选项勾上就行了。
private void OnTriggerEnter2D(Collider2D collision)//检测子弹和什么发生碰撞了,碰撞后要做什么事情
{
if (Equals(collision.tag,"Wall"))//碰到的是墙
{
ControlPlay(NewObject(Resources.Load("GameResource/AudioSource/Hit") as AudioClip));//播放hit声音
Destroy(collision.gameObject);//摧毁墙
}
if (Equals(collision.tag,"Sea"))
{
return;//碰到海直接穿过去
}
if (collision.tag == "Cristal")//碰到水晶
{
Instantiate(Resources.Load("Prefabs/BrokenCristal"), collision.gameObject.transform.position, collision.gameObject.transform.rotation);//实例化一个破水晶
ControlPlay(NewObject(Resources.Load("GameResource/AudioSource/HeartDamage") as AudioClip));//放声音
Instantiate(Resources.Load("Prefabs/Explosion"), collision.gameObject.transform.position, collision.transform.rotation);//爆炸效果
Destroy(collision.gameObject);//摧毁水晶
GameObject.Find("Environment").GetComponent<BornAndText>().isCristalDestroyed = true;//更改bool变量为true,在BornAndText里实现游戏失败的逻辑
}
if (collision.tag == "Enemy")
{
if (gameObject.tag == "EnemyBullet")//敌人的子弹碰到敌人就啥也不干
return;
ControlPlay(NewObject(Resources.Load("GameResource/AudioSource/Die") as AudioClip));
Instantiate(Resources.Load("Prefabs/Explosion"), collision.gameObject.transform.position, collision.gameObject.transform.rotation);
GameObject.Find("Environment").GetComponent<