Unity如何实现射击小游戏
发表于:2025-02-19 作者:千家信息网编辑
千家信息网最后更新 2025年02月19日,这篇文章主要为大家展示了"Unity如何实现射击小游戏",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Unity如何实现射击小游戏"这篇文章吧。游戏画面展示
千家信息网最后更新 2025年02月19日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安全错误
数据库的锁怎样保障安全
网络安全教育影片
人工智能薪酬数据库
西宁网络安全课程
联手共筑网络安全校园
大型软件开发模式
登陆id连接服务器时出错
计算机网络技术升本考试试题
服务器如何泡水
计算机网络技术专业教程
忐忑视频软件开发
app软件开发解决方案价格
软件开发公司都要哪些部门
信息网络技术实践报告
安全教育之网络安全主题班会
软件开发即征即退持续几年
怎么提高软件开发的单价
我的世界ios服务器
软件开发违法处置
进销存订单退货数据库设计
成都家教服务软件开发哪家专业
局域网数据库代码
苹果软件开发在中国的市值
软件开发的重要功能
电信十四五网络安全规划
内部网络安全的主因
盐城网络安全准入控制系统推荐
扫描ssr服务器
软件开发与项目管理名词解释
雅安网络技术产品介绍
蚂蚁互联网络科技