Unity如何实现射击小游戏
发表于:2024-11-16 作者:千家信息网编辑
千家信息网最后更新 2024年11月16日,这篇文章主要为大家展示了"Unity如何实现射击小游戏",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Unity如何实现射击小游戏"这篇文章吧。游戏画面展示
千家信息网最后更新 2024年11月16日Unity如何实现射击小游戏
这篇文章主要为大家展示了"Unity如何实现射击小游戏",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Unity如何实现射击小游戏"这篇文章吧。
游戏画面展示
这款小游戏只用了两个UI界面,一个是菜单界面,另一个是战斗界面
菜单界面有三种模式,分别是一般、困难和地狱
战斗界面就是很简单的从两边刷野怪,然后主角开枪打死他们
UI搭建很简单,只有一张背景图使用Image,加上一个Text文本输入框,然后摆放一下位置即可!
菜单界面如下
战斗画面演示
游戏代码解析
这款横版2D射击小游戏,核心部分只需要 两个脚本 就可以完成,一学就会,一起来看一下代码吧!
一个挂载到玩家身上的脚本PlayerMove,用于控制玩家的左右移动和跳跃
还有两种开枪的方法,分别是穿透和重击!当碰到怪物的时候就会掉血
当玩家血量低于0 的时候就跳出 游戏结束 的画面,非常简单清晰的逻辑!
代码如下,一个没有多少行,代码内容也是Unity最基础的知识点,相信稍微懂一点的人也都能看懂
PlayerMove代码如下
using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;public class PlayerMove : MonoBehaviour { ////// 生命值 /// public int HP; public Slider hpUI; ////// 动画组建 /// public Animator _animator; ////// 击杀 /// public static int jisha; public Text jishaUI; public Text jishaUIEnd; ////// 是否跳跃 /// public bool isJump; ////// 游戏结束UI /// public GameObject ui; // Use this for initialization void Start () { Time.timeScale = 1; jisha = 0; hpUI.maxValue = HP; hpUI.value = HP; } // Update is called once per frame void Update () { if (Input.GetKeyDown (KeyCode.Escape)) { UnityEngine.SceneManagement.SceneManager.LoadScene("Menu"); } if (HP <= 0) { HP = 0; } jishaUI.text = "击杀:" + jisha; jishaUIEnd.text = "击杀:" + jisha; if (HP == 0) { ui.SetActive(true); Time.timeScale = 0; } hpUI.transform.position = Camera.main.WorldToScreenPoint(transform.position + new Vector3(0, 3, 0)); hpUI.value = HP; if (Input.GetKey (KeyCode.D)) { transform.localEulerAngles = new Vector3(0, 0, 0); transform.Translate(Vector3.right * Time.deltaTime * 7); _animator.SetBool("run", true); } else if (Input.GetKey(KeyCode.A)) { transform.localEulerAngles = new Vector3(0, 180, 0); transform.Translate(Vector3.right * Time.deltaTime * 7); _animator.SetBool("run", true); } else { _animator.SetBool("run", false); } if (Input.GetKeyDown (KeyCode.Space) && !isJump) { GetComponent().velocity = new Vector2(0, 30); } if (isJump) { _animator.SetBool("Jump", true); } else { _animator.SetBool("Jump", false); } if (Input.GetKeyDown (KeyCode.J)) { GameObject n = Instantiate(Resources.Load("a1"), transform.GetChild(0).position, transform.GetChild(0).rotation) as GameObject; n.name = "a1"; Destroy(n, 2); } if (Input.GetKeyDown(KeyCode.K)) { GameObject n = Instantiate(Resources.Load("a2"), transform.GetChild(0).position, transform.GetChild(0).rotation) as GameObject; n.name = "a2"; Destroy(n, 2); } } private void OnTriggerStay2D(Collider2D collision) { if (collision.name == "0") { isJump = false; } } private void OnTriggerExit2D(Collider2D collision) { if (collision.name == "0") { isJump = true; } } public void ReturnMenu() { UnityEngine.SceneManagement.SceneManager.LoadScene("Menu"); }}
还有一个Monster脚本,用于显示怪物的生命、速度和攻击力等
还有受到玩家打出的子弹就会掉血,很简单的方法就可以实现!
完整代码如下:
using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;public class Monster : MonoBehaviour { ////// 生命 /// public int HP; ////// 速度 /// public float speed; ////// 攻击力 /// public int att; public Slider hpUI; // Use this for initialization void Start () { speed = Random.RandomRange(speed - 2, speed + 2); Destroy(gameObject, 10); GameObject n = Instantiate(Resources.Load("HP")) as GameObject; n.transform.SetParent(GameObject.Find("HPShow").transform); n.transform.localScale = Vector3.one; hpUI = n.GetComponent(); hpUI.maxValue = HP; hpUI.value = HP; } // Update is called once per frame void Update () { if (HP <= 0) { HP = 0; PlayerMove.jisha++; Destroy(gameObject); } hpUI.transform.position = Camera.main.WorldToScreenPoint(transform.position + new Vector3 (0, 6, 0)); hpUI.value = HP; transform.Translate(Vector3.right * Time.deltaTime * speed); } private void OnTriggerEnter2D(Collider2D collision) { //撞到玩家生命值 if (collision.name == "Player") { collision.GetComponent ().HP -= Random.RandomRange(att - 2, att + 2); Destroy(gameObject); } //红色子弹伤害低,能够连续穿透射击多个目标 if (collision.name == "a1") { HP -= Random.RandomRange(8, 15); } //红色子弹伤害高,只能击中一个目标 if (collision.name == "a2") { HP -= Random.RandomRange(20, 40); Destroy(collision.gameObject); } } private void OnDestroy() { Destroy(hpUI.gameObject); }}
游戏打包
这个小游戏只需要上面两个脚本差不多就算是完成了,然后还可以打包出来到电脑上面玩!
打包这个游戏也很简单,只需要在Build下将下面几个场景添加进去直接Build就好啦!
打包出来的文件夹是这个样子的,然后点击.exe文件就可以直接在电脑上玩了!
以上是"Unity如何实现射击小游戏"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
小游戏
代码
界面
射击
玩家
内容
生命
脚本
两个
子弹
画面
篇文章
菜单
战斗
怪物
攻击力
文件
方法
时候
电脑
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
全方位网络安全解决方案
搭建网络安全环境
如何看服务器是否格式化
找不到共享数据库或照片路径
大四毕业编程数据库工资
中国电信网络安全产业园
快期服务器条件单
青年提高网络安全意识
计算机网络技术怎么学才学得好
公司年度汇总数据库
上海网络技术服务咨询报价
辽宁服务器硬盘质量怎么样
wifi网络安全方法
网络安全一等奖手抄报8k
深受顾客欢迎的新冠病毒数据库
国内外网络安全会议或比赛
信息技术学业水平考试数据库
九月十四日网络安全周直播
数据库被勒索后数据会被下载吗
panalog服务器
服务器管理器创建于2016
昆山管理软件开发记录
海兴手机软件开发
网络安全五不得十禁止的内容
数据字典跟数据库的关系
软件开发课程班
git服务器管理
信息技术学业水平考试数据库
王者荣耀服务器更新
重庆crm软件开发工程师