千家信息网

Unity如何实现射击小游戏

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,这篇文章主要为大家展示了"Unity如何实现射击小游戏",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Unity如何实现射击小游戏"这篇文章吧。游戏画面展示
千家信息网最后更新 2025年02月01日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安全错误 数据库的锁怎样保障安全 有网络软件显示无法连接服务器 分布式数据库中间件对照表 数据库应用技术实验指导天津大学 申请网络安全证书 如何修改服务器界面配置 酷狗音乐服务器图片 河南整机销售软件开发公司 微医网络安全工作年度会 农村网络安全教育 集客网络技术支撑职责 电竞经理服务器已满怎么办 游戏账号交易数据库设计 吉林果蔬软件开发哪家专业 无线传感网络技术的起源 数据库怎么查字符限制 软件开发试岗靠谱吗 软件开发 评标办法 结合自身工作谈谈网络安全问题 先锋期货交易服务器 青岛超立方网络技术有限公司 华为的数据库怎么恢复 南京大学数据库技术 三级网络技术用哪本书 崇明区银联数据库服务销售 数据库如何出现相同的字段 网络安全手抄报写字内容资料 北邮数据库原理应用 fm2016 数据库 河北net软件开发定制费用 数据库设计 第三范式
0