当前位置:首页 » 《休闲阅读》 » 正文

【精品游戏】 横版2D射击小游戏 效果展示+完整项目源码【超级简单,自己也可以做游戏玩了】_努力前行,总会成为自己心中的那道光

3 人参与  2022年01月04日 15:58  分类 : 《休闲阅读》  评论

点击全文阅读


📢前言

  • 最近快要到国庆假期了,给大家整理出来一些个 小游戏 用来学习和娱乐
  • 人们一直都说学习和玩游戏不能兼顾,那我们就来边学习怎样制作游戏,边玩游戏 不就兼得了嘛~ 我可真是一个小天才呢~
  • 所以本篇文章为大家带来一个 横版2D射击小游戏,游戏制作超级简单,玩法一学就会, 一起来看看吧!请添加图片描述

🎬横版2D射击小游戏

🎥游戏画面展示

这款小游戏只用了两个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 {

    /// <summary>
    /// 生命值
    /// </summary>
    public int HP;
    public Slider hpUI;

    /// <summary>
    /// 动画组建
    /// </summary>
    public Animator _animator;

    /// <summary>
    /// 击杀
    /// </summary>
    public static int jisha;
    public Text jishaUI;
    public Text jishaUIEnd;

    /// <summary>
    /// 是否跳跃
    /// </summary>
    public bool isJump;

    /// <summary>
    /// 游戏结束UI
    /// </summary>
    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<Rigidbody2D>().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 {
    /// <summary>
    /// 生命
    /// </summary>
    public int HP;

    /// <summary>
    /// 速度
    /// </summary>
    public float speed;

    /// <summary>
    /// 攻击力
    /// </summary>
    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<Slider>();
        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<PlayerMove>().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文件就可以直接在电脑上玩了!

在这里插入图片描述


🎁游戏源码下载

文中这个 横版2D射击小游戏的源码工程下载链接就在这里啦!

横版2D射击小游戏的源码工程下载链接

CSDN有积分的小伙伴可以下载体验,积分不够的直接关注文章最下面的公众号回复:游戏资源

就可以领取几十款游戏源码和素材啦,看看有没有你想要的那一款!


💬总结

本篇文章分享了一个超级简单的横版2D射击小游戏,非常适合新手学习体验

所见即所得,可以很快的体验边做游戏边玩游戏 的感觉!

后面还会继续分享许多游戏,有跟本篇文章类似很简单的小游戏

也会分享一些 中大型游戏的源码等等 ,给大家提供学习参考!

那本篇文章就到这里啦!点一波三连 咱们下次再见


🚀往期优质文章分享

  • ❤️Unity零基础到入门 | 游戏引擎 Unity 从0到1的 系统学习 路线【全面总结-建议收藏】!
  • 🧡花一天时间做一个高质量飞机大战游戏,过万字Unity完整教程!漂亮学妹看了直呼666!
  • 💛重回童年的经典系列☀️|【炸弹人小游戏】制作过程+解析 | 收藏起来跟曾经的小伙伴一起梦回童年!
  • 💚通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难
  • 🤍爆肝整整一个周末写一款类似 皇室战争 的 即时战斗类 游戏Demo!两万多字游戏制作过程+解析!
  • 💙一款类似“恐龙快打”的 横版街机格斗游戏 该如何制作?| 一起来学习 顺便送源码【码文不易,建议收藏学习】
  • 💜重回童年的经典系列☀️|【贪吃蛇小游戏】近两万字完整制作过程+解析+源码 【建议收藏学习】

🚀 优质专栏分享 🚀
  • 🎄如果感觉文章看完了不过瘾,可以来我的其他 专栏 看一下哦~
  • 🎄比如以下几个专栏:Unity基础知识学习专栏Unity游戏制作专栏Unity实战类项目 算法学习专栏
  • 🎄可以学习更多的关于Unity引擎的相关内容哦!直接点击下面颜色字体就可以跳转啦!
🎄 Unity基础知识学习专栏 🎄
⭐️ Unity游戏制作专栏 ⭐️
🍇 Unity实战类项目 🍇
💦 小Y学算法 💦

点击全文阅读


本文链接:http://m.zhangshiyu.com/post/32689.html

小游戏  游戏  学习  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1