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安全错误
数据库的锁怎样保障安全
公司软件开发北京
深圳排队网络技术待遇
论文三大主流数据库是什么
爱微知著网络技术公司
打印服务器哪个牌好
一二三线互联网科技标准
中小学网络安全周总结
租赁服务器能不能加模组
浦东新区机电软件开发收购价格
php java服务器
软件开发系统检查什么项目
天津民航网络安全会
数据库对cpu核心要求高吗
网络安全防范能力不足
数据库单元格锁定
mcgs触摸屏与数据库
上海网络技术分类咨询报价
大数据软件开发工资
c 交换输入的两个数据库
nosql是什么样的数据库
苏州手机软件开发公司有哪些
绿联私有云服务器怎么样
网络安全教育知识内概括
2023年网络安全市场规模
数据库唯一码
首款面向云计算的服务器
苹果提高网络安全吗
广州网络安全公司电话
有关互联网科技的名称
怎样写网络安全教育