📢前言
- 最近快要到國慶假期了,給大家整理出來一些個 小游戲 用來學習和娛樂
- 人們一直都說學習和玩游戲不能兼顧,那我們就來邊學習怎樣制作游戲,邊玩游戲 不就兼得了嘛~ 我可真是一個小天才呢~
- 所以本篇文章為大家帶來一個 橫版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引擎的相關內容哦!直接點擊下面顏色字體就可以跳轉啦!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/302314.html
標籤:其他
