天天看點

Unity2D小遊戲顔色設計簡單Demo和思路分享(初學者作品)前言一、素材制作二、場景搭建三、代碼功能實作

文章目錄

  • 前言
  • 一、素材制作
    • 1.這邊就是簡單用PS到了幾個基礎圖形
  • 二、場景搭建
    • 1.搭建目标場景
    • 2.搭建遊戲場景
    • 3.添加按鈕重新開始和退出遊戲
  • 三、代碼功能實作
    • 1. Shoot腳本,子彈射擊的實作
    • 2.ButtonGreen腳本,實作點選控制子彈的射出
    • 3.通過标簽實作碰撞檢測和空氣牆的制作
    • 4.實作遊戲重新開始和通關判斷

前言

寫個了ColorShoot的小遊戲簡單Demo,主要是分享思路和鞏固基礎知識。

自學Unity一個月做個小遊戲試試手

一、素材制作

1.這邊就是簡單用PS到了幾個基礎圖形

1.三種顔色的方塊

2.4種顔色的圓(主要顔色一樣的話射擊的時候顔色會疊加)

Unity2D小遊戲顔色設計簡單Demo和思路分享(初學者作品)前言一、素材制作二、場景搭建三、代碼功能實作

二、場景搭建

1.搭建目标場景

1.這邊其實在PS裡搭建好以後直接用一個精靈展示也是可以的,我這邊是拼出來的。

2.這裡目标就看關卡的需要了,我這邊就随便拼了個這樣的

3.基本下面的Target,RectWhit,Circle都是空物體,用于存放其他精靈子物體

Unity2D小遊戲顔色設計簡單Demo和思路分享(初學者作品)前言一、素材制作二、場景搭建三、代碼功能實作
Unity2D小遊戲顔色設計簡單Demo和思路分享(初學者作品)前言一、素材制作二、場景搭建三、代碼功能實作

2.搭建遊戲場景

1.先建立一個白色方塊精靈,制作為預制體,然後拖出來9個方塊組成遊戲場景

注意:該遊戲物體需要添加2D的碰撞器元件

Unity2D小遊戲顔色設計簡單Demo和思路分享(初學者作品)前言一、素材制作二、場景搭建三、代碼功能實作
Unity2D小遊戲顔色設計簡單Demo和思路分享(初學者作品)前言一、素材制作二、場景搭建三、代碼功能實作
Unity2D小遊戲顔色設計簡單Demo和思路分享(初學者作品)前言一、素材制作二、場景搭建三、代碼功能實作

2.建立圓的按鈕預制體,先放一個綠的和紅的就可以了

注意:該遊戲物體需要添加2D的碰撞器用于檢測滑鼠點選

Unity2D小遊戲顔色設計簡單Demo和思路分享(初學者作品)前言一、素材制作二、場景搭建三、代碼功能實作

3.建立子彈的預制體,用顔色較深的兩個圓來做

注意:該遊戲物體需要添加2D的碰撞器和剛體,同時需要勾選觸發器,剛體重力調整為0

Unity2D小遊戲顔色設計簡單Demo和思路分享(初學者作品)前言一、素材制作二、場景搭建三、代碼功能實作
Unity2D小遊戲顔色設計簡單Demo和思路分享(初學者作品)前言一、素材制作二、場景搭建三、代碼功能實作

3.添加按鈕重新開始和退出遊戲

1.我這邊選擇是這種渲染模式,因為遊戲場景不會超出螢幕範圍

Unity2D小遊戲顔色設計簡單Demo和思路分享(初學者作品)前言一、素材制作二、場景搭建三、代碼功能實作
Unity2D小遊戲顔色設計簡單Demo和思路分享(初學者作品)前言一、素材制作二、場景搭建三、代碼功能實作
Unity2D小遊戲顔色設計簡單Demo和思路分享(初學者作品)前言一、素材制作二、場景搭建三、代碼功能實作

三、代碼功能實作

1. Shoot腳本,子彈射擊的實作

Unity2D小遊戲顔色設計簡單Demo和思路分享(初學者作品)前言一、素材制作二、場景搭建三、代碼功能實作

1.需要引用的空間

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
           

2.制作子彈的射擊

public float speed = 5;//定義一個浮點變量速度
    public bool isGreen;//定義一個布爾變量判斷射出的子彈是綠的還是不是綠的
    public void ShootGreen()//聲明一個射擊方法,思路是子彈自動向前方勻速運動
    {       
            transform.Translate(transform.up * speed * Time.deltaTime, Space.World);              
    }
  void Update()
    {
        ShootGreen();//在Update種調用射擊方法
    }
           

2.ButtonGreen腳本,實作點選控制子彈的射出

1.代碼實作子彈執行個體化的功能

public bool isButtonGreen;//定義一個布爾變量用于判斷按鈕是綠的還是不是綠的
    public GameObject GreenBullet;//定義一個遊戲物體用于擷取綠色子彈
    public GameObject RedBullet;//頂一個遊戲物體用于擷取紅色子彈
    private void OnMouseDown()//這裡用一個滑鼠按下方法來判斷射擊的時機,按鈕需要添加2D碰撞器元件,不然檢測不到
    {       
        if (isButtonGreen)//當按下綠色按鈕時,原地執行個體化一個綠色子彈
        {
            Instantiate(GreenBullet, transform.position, transform.rotation);
        }
        if (!isButtonGreen)//當按下紅色按鈕時,原地執行個體化一個紅色子彈
        {
            Instantiate(RedBullet, transform.position, transform.rotation);
        }
    }
           

2.挂載在按鈕上,然後右邊三個按鈕調整為Z軸旋轉90度,這樣根據之前Up的子彈運動代碼,子彈就會從按鈕上生成後向左移動,下面三個按鈕不需要旋轉就會往上發射子彈(然後該旋轉不需要通過預制體改動,是根據按鈕自身的需求進行改動)

Unity2D小遊戲顔色設計簡單Demo和思路分享(初學者作品)前言一、素材制作二、場景搭建三、代碼功能實作
Unity2D小遊戲顔色設計簡單Demo和思路分享(初學者作品)前言一、素材制作二、場景搭建三、代碼功能實作

3.通過标簽實作碰撞檢測和空氣牆的制作

1.新添加2個标簽用于判斷是矩形還是空氣牆

Unity2D小遊戲顔色設計簡單Demo和思路分享(初學者作品)前言一、素材制作二、場景搭建三、代碼功能實作

2.回到Shoot腳本,同時給所有的白色方塊添加上RectWhite的标簽

同時也需要給挂載Shoot腳本的子彈,指定紅色方塊和綠色方塊,還有選擇這個子彈是紅色子彈還是綠色子彈

Unity2D小遊戲顔色設計簡單Demo和思路分享(初學者作品)前言一、素材制作二、場景搭建三、代碼功能實作
Unity2D小遊戲顔色設計簡單Demo和思路分享(初學者作品)前言一、素材制作二、場景搭建三、代碼功能實作
public Sprite green;//定義一個綠色精靈用于擷取綠色矩形,如果顔色矩形數量多就用數組
    public Sprite red;//定義一個紅色個精靈用于擷取紅色矩形
```private void OnTriggerEnter2D(Collider2D collision)//碰撞檢測
    {
        switch (collision.tag)//用标簽判斷碰撞的物體
        {
            case "Wall"://當子彈碰到空氣牆就銷毀
                Destroy(gameObject);
                break;
            case "RectWhite"://當子彈碰到白色方塊的時候
                if (isGreen)//判斷如果是綠色子彈則将碰撞到的方塊變成綠色
                {
                    collision.GetComponent<SpriteRenderer>().sprite = green;
                }
                if (!isGreen)//判斷如果不是綠色子彈則将碰撞到的方塊變成紅色
                {
                    collision.GetComponent<SpriteRenderer>().sprite = red;
                }
                break;          
        }
        

           

3.空氣牆的制作

1.建立一個空物體,然後建立四個空物體,添加上2D碰撞器元件,并加上Wall 的标簽,位置可以像我下面一樣,這樣子彈射到空氣牆就會銷毀。

Unity2D小遊戲顔色設計簡單Demo和思路分享(初學者作品)前言一、素材制作二、場景搭建三、代碼功能實作
Unity2D小遊戲顔色設計簡單Demo和思路分享(初學者作品)前言一、素材制作二、場景搭建三、代碼功能實作

4.實作遊戲重新開始和通關判斷

1.通關判斷,在Shoot腳本裡

public void Sucess_F()//勝利方法,相當于遊戲種的9個方塊達成與目标一樣的條件,如果後續學會了更簡單的方法再來改
    {
        if (GameObject.Find("RectWhite1").GetComponent<SpriteRenderer>().sprite == red&&
            GameObject.Find("RectWhite2").GetComponent<SpriteRenderer>().sprite == green&&
            GameObject.Find("RectWhite3").GetComponent<SpriteRenderer>().sprite == green&&
            GameObject.Find("RectWhite4").GetComponent<SpriteRenderer>().sprite == red&&
            GameObject.Find("RectWhite5").GetComponent<SpriteRenderer>().sprite == red&&
            GameObject.Find("RectWhite6").GetComponent<SpriteRenderer>().sprite == red&&
            GameObject.Find("RectWhite7").GetComponent<SpriteRenderer>().sprite == red&&
            GameObject.Find("RectWhite8").GetComponent<SpriteRenderer>().sprite == green&&
            GameObject.Find("RectWhite9").GetComponent<SpriteRenderer>().sprite == red
            )
        {          
            SceneManager.LoadScene("Sucess");//切換勝利場景
        }
    }
     void Update()
    {
        Sucess_F();//勝利方法
    }
           

2.退出遊戲和重新開始

建立新腳本Game嗎,并建立一個空物體用于挂載腳本,然後将該物體指定給按鈕後,選擇對應的方法,退出遊戲按鈕也同理

Unity2D小遊戲顔色設計簡單Demo和思路分享(初學者作品)前言一、素材制作二、場景搭建三、代碼功能實作
public Sprite white;//定義一個精靈擷取白色方塊
    public void Button_Restart()
    {
      GameObject[] gameObject = GameObject.FindGameObjectsWithTag("RentWhite");//定義一個精靈數組用于擷取所有有白色标簽的方塊
        for (int i = 0; i < gameObject.Length; i++)//用一個For循環來把所有方塊換成白色方塊完成初始化
        {
            gameObject[i].GetComponent<SpriteRenderer>().sprite = white;
        }
    }
     public void Button_OnApplicationQuit()//遊戲退出方法
    {
        Application.Quit();
    }
           

3.勝利界面腳本

這邊建立了第二個場景,勝利場景裡面就一個按鈕和一個文字

GameObject空物體用于挂載腳本,将該物體指定給按鈕,然後選擇到我們聲明的方法,這樣點選後就會傳回遊戲界面

Unity2D小遊戲顔色設計簡單Demo和思路分享(初學者作品)前言一、素材制作二、場景搭建三、代碼功能實作
Unity2D小遊戲顔色設計簡單Demo和思路分享(初學者作品)前言一、素材制作二、場景搭建三、代碼功能實作
public void Button_MorePlay()
    {
        Button_Restart();//重置方塊顔色方法
        SceneManager.LoadScene("Game");//回到遊戲界面
    }
           
Unity2D小遊戲顔色設計簡單Demo和思路分享(初學者作品)前言一、素材制作二、場景搭建三、代碼功能實作