25806人加入学习
(149人评价)
Unity2D 初级案例 - 坦克大战(Unity2017.1)

制作于2017年12月23日

价格 免费

 

每次在克隆体里面修改时,记得要在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;

[展开全文]

每个层级的物体只能作用于自己层级的物体

[展开全文]

授课教师

SiKi学院老师

课程特色

图文(1)
视频(32)
下载资料(1)