Unity入门第五天:玩家与敌人的生成,基地爆炸动画

本篇讲述了在游戏开始时的角色是如何生成的,以及基地爆炸动画的触发和设置

今天是第五天了,虽然只更新了一点游戏细节,但debug花了不少功夫

不知道为什么自己的浏览器听不了歌,手机上却可以。Chrome开无痕直接不显示,痴呆.jpg

06/22更新,Chrome已经可以听歌了

## 基地被击中时的爆炸动画 在昨天的学习中我们只改变了基地旗帜,但~~艺术就是爆炸~~,于是今天加上爆炸特效:
1
2
3
4
5
6
7
//爆炸动画(需要在Project界面加载该预制体)
public GameObject explosionPrefab;
public void Die()
{
sr.sprite = BrokenSprite;
//在昨天的基础上加上生成爆炸动画的场面:
Instantiate(explosionPrefab, transform.position, transform.rotation);
--- ## 玩家与敌人的生成 为了让游戏看起来更有沉浸感,在玩家与敌人出生前播放出生特效,过一秒钟后玩家/敌人才会生成。

首先创建两种敌人的预制体SmallEnemyBigEnemy,并将玩家的脚本player复制到新脚本enemy中,更新脚本中的预制体(如转像图案,子弹,特效等)。

对预制体Born_0(不知道为什么当时有后缀_0)创建新脚本Born

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
public class Born : MonoBehaviour
{
//在project界面加载玩家的预制体
public GameObject playerPrefab;
//在project界面加载敌人的预制体(两个)
//用列表来随机生成两种敌人的一种
public GameObject[] enemyPrefabList;
//在hierarchy界面判断Born是不是创建玩家的
public bool createPlayer;

// Start is called before the first frame update
void Start()
{
//延时调用(更有沉浸感)
Invoke("BornTank", 1f);
//延时销毁
Destroy(gameObject, 1f);
}

void Update()
{}

private void BornTank(){
//如果创建的是玩家
if (createPlayer){
//生成玩家的预制体(Quaternion.identity就是指Quaternion(0,0,0,0))
Instantiate(playerPrefab, transform.position, Quaternion.identity);}
else{
//int生成随机数只包括第一个数(0),不包括第二个数(2):0或1
int num = Random.Range(0,2);
Instantiate(enemyPrefabList[num], transform.position, Quaternion.identity);
}
}
}

今天遇到的problem

随着学习的深入每天都要开始debug了~

对于2019版本的Unity,当我在hierarchy中复制player粘贴生成Enemy时,我发现我无法直接删除player下的shield预制体。如果我强行删除Enemy下的shield(也就是复制player的赠品),Project内的Player下的shield也会消失,也就意味着hierarchyplayershield也消失了。

探索无果后,我只能创建一个新的2DObject重新开始,并解决了这个问题。

扫一扫,分享到微信

微信分享二维码
  • Copyrights © 2020-2024 Yangyang Cui

请我喝杯咖啡吧~

支付宝
微信