public bool isPlayerBullect的默认值是false
public bool isPlayerBullect的默认值是false
每次在克隆体里面修改时,记得要在override里面applyall一下 将预制体也改了
区别玩家子弹与敌方子弹
难道要写两个脚本? 二合一 用一个bool值来判断一下是谁的子弹
public bool isPlayerBullet;
再在子弹switch标签里case tank 下 补判断
wall下面是销毁子弹自身与销毁自身
加collision就是碰撞对象
空气墙和障碍则都是只销毁子弹 airbarrier也用barrier的标签 并applyall
heart 新添加一个脚本用于破损状态下的渲染
拿到渲染器的引用 private SpriteRenderer sr;
再拿到被破坏时的图片
public Sprite BrokenSprite;公共变量到时候拖进去
在start里
sr=GetComponent<SpriteRenderer>();记得加括号
在外部封装一个又来一个Die方法 同样的名字
public void Die()
{
sr.sprite=BrokenSprite;
}再找下图片拖进去
再在case下加
collision.SendMessage("Die"); 就会调用Die方法了
每个层级的东西只能作用于自己的层级,所以子弹需要与他们同级
触发器代码中的标签名必须与游戏里的标签名一致,否则无法对游戏物体进行处罚交互
isPlayerBullect
Destroy(collision.gameObject
SpriteRenderer sr
sr=GetComponent
Sprite BrokenSprite
sr.sprite=BrokenSprite
两个物体不在同一层级上时,碰撞检测无法生效
子弹区分。
敌人子弹和玩家子弹,用一个bool值来进行区别。二元对立用bool.
Destroy(collision.gameobject)
Destroy(gameobject);
层级相同,才能触发?。。。。。
调用
collision.Sendmessage("Die")
区别玩家和敌人的子弹
public bool isplayerBullet;
if (!isplayerBullet)
{
collision.SendMessge("Die");}
墙
Destroy (collision.gameObject;
Destroy(gameObject);
障碍;
Destroy(gameObject);
heart d 改变:
private SpriteRenderer sr;
void Start(){
sr = GetComponet<SpriteRenderer>();}
public void Die(){
}
Heart 脚本:Die() 拿spriteRander组件
坦克无敌消失后,一发射就自爆了
引用游戏组件的时候有一定要在star方法里面获取它,不然会导致空zhejia
Destroy(collisio.gameObject);为销毁掉接触的物体,Destroy(gameObject);为销毁掉物体自身。
case "Tank":
if(isPlayerBullect)//不是玩家的子弹
{
collision.SendMessage("Die");
}
break;
加一个:Destroy(gameObject);销毁
每个层级的物体只能作用于自己层级的物体