9645人加入学习
(13人评价)
Unity版植物大战僵尸:游戏制作完全指南

制作完成于2023年11月22日 使用Unity2023.1 VS2022

价格 免费

程序

Card: using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; enum CardState { Cooling, WaitingSun, Ready } public class Crad : MonoBehaviour { private CardState cardState = CardState.Cooling; public GameObject cardLight; public GameObject cardGray; public Image cardMask; [SerializeField] private float cdTime = 2; private float cdTimer = 0; [SerializeField] private int needSunPoint = 50; private void Update() { switch (cardState) { case CardState.Cooling: CoolingUpdate(); break; case CardState.WaitingSun: WaitingSunUpdate(); break; case CardState.Ready: ReadyUpdate(); break; default: break; } } void CoolingUpdate() { cdTimer += Time.deltaTime; cardMask.fillAmount = (cdTime - cdTimer) / cdTime; if(cdTimer >= cdTime) { TransitionToWaitingSun(); } } void WaitingSunUpdate() { if (needSunPoint <= SunManager.Instance.SunPoint) { TransitionToReady(); } } void ReadyUpdate() { if (needSunPoint > SunManager.Instance.SunPoint) { TransitionToWaitingSun(); } } void TransitionToWaitingSun() { cardState = CardState.WaitingSun; cardLight.SetActive(false); cardGray.SetActive(true); cardMask.gameObject.SetActive(false); } void TransitionToReady() { cardState = CardState.Ready; cardLight.SetActive(true); cardGray.SetActive(false); cardMask.gameObject.SetActive(false); } void TransitionToCooling() { cardState = CardState.Cooling; cdTimer = 0; cardLight.SetActive(false); cardGray.SetActive(true); cardMask.gameObject.SetActive(true); } public void OnClick() { if (needSunPoint > SunManager.Instance.SunPoint) return; TransitionToCooling(); } } SunManager: using System.Collections; using System.Collections.Generic; using UnityEngine; public class SunManager : MonoBehaviour { public static SunManager Instance { get; private set; } private void Awake() { Instance = this; } [SerializeField] private int sunPoint; public int SunPoint { get { return sunPoint; } } }

[展开全文]

此时此刻 我要杨诗一首 我在b18 心在18外 老师针对我 我也没办法 上课也不会 下课就回去 这个学怎么上也 孺子不可教也 而3思而不思则带 带而不思则网 古人云 你不学就不学 大家一起不学不就行了 假日曰班里人都不学 教主肯定也不说 他奶奶的 一曲高歌 一群假吊斯在这块学 曰:无语。

[展开全文]

第三课时:展示类图

1.plants

2.Zombies

3.开始结束

······

[展开全文]

第二课时:资料下载

1.资料包

(1)声音

(2)图片

2.载入2D模板

[展开全文]

第一课时:整体游戏展示

1.开始

2.植物

3.僵尸

4.主页面

 

[展开全文]

cdTimer+=Time.deltaTime;

cardMask.fillAmount=(cdTime-cdTimer)/cdTime;

if(cdTimer>=cdTime){

TransitionToWaitingSun();

}

void  TransitionToWaitingSun(){

cardState=CardState.WaitingSun;

cardLight.SetActive(false);

cardGray.SetActive(true);

cardMask.gameObject.SetActive(false);

}

[展开全文]

使用unity2023.2.2.20f1,创建的anim播放会闪烁,只有部分图片会显示。

问题原因:部分向日葵图片被背景遮挡

解决方案,调整Sundflower的sprite renderer 的order in layer 为1,默认Background为0

[展开全文]

动画也是可以加入关键帧来 设置子元素的相关操作

[展开全文]

10-开发卡片点击后的植物生成和跟随  

在Manager上创建脚本:HandManager

[展开全文]

09-创建第一个植物-向日葵

双击【Back Ground】放大视图

 

给所有植物添加一个父类plant

 

给Sun flower添加脚本:Plant

[展开全文]

08-开发阳光值的消耗和更新

阳光值直接放在【CardListUI】里

[展开全文]

07-卡片的点击和状态切换到冷却

【冷却状态】【等待阳光状态】已完成

 

在Card Light上添加一个【button】

[展开全文]

06-检测阳光值是否足够

右键创建一个【空物体 】:Manager

 

在Manager上添加一个脚本:SunManager

[展开全文]

在CardTemplate上添加【脚本】:Card

(控制卡片行为)

 

 

  

[展开全文]

在【canvas】下

右键- UI- image:选择卡片

 

command+d  来一个【灰色】的

command+d  来一个【冷却中】的,改一个alpha值为103的透明度

  

控制冷却效果

imagetype:filled

 

把3张图片,右击-- create empty parent :CardTemplate

代表一个模版

 

 

 

 

[展开全文]

授课教师

问问题加入A计划,有专门负责答疑的老师哦!!!

课程特色

下载资料(1)
视频(46)

学员动态