四、遊戲物件與圖形基礎(牧師與魔鬼 動作分離版)

一個路過的Developer發表於2020-10-19

1、基本操作演練【建議做】

下載 Fantasy Skybox FREE, 構建自己的遊戲場景

  • 資源商店下載天空盒

在這裡插入圖片描述

  • 在 main camera新增元件 Skybox

在這裡插入圖片描述

  • 構建地形 Terrain,下載的天空盒會有構建好成型的地形,可複製過來,可以種樹,畫坡…

在這裡插入圖片描述

寫一個簡單的總結,總結遊戲物件的使用

遊戲物件主要是:

  • Empty (不顯示卻是最常用物件之一)
    • 作為子物件的容器
    • 建立一個新的物件空間
  • 3D 物體
    • 基礎 3D 物體(Primitive Object):立方體(Cube)、球體(Sphere)、膠囊體(Capsule)、圓柱體(Sylinder)、平面(Plane)、四邊形(Quad)
    • 構造 3D 物體:由三角形網格構建的物體:如地形等
  • Camera 攝像機,觀察遊戲世界的視窗
  • Light 光線,遊戲世界的光源
  • Audio 聲音

遊戲物件的使用:
可以給物件新增元件,元件包括物體是不是剛體,受不受重力影響等等,還可以通過編寫指令碼,並將其新增到元件上面來用指令碼控制遊戲物件的行為

2、程式設計實踐(二選一)

牧師與魔鬼 動作分離版

【2019開始的新要求】:設計一個裁判類,當遊戲達到結束條件時,通知場景控制器遊戲結束
獎勵關卡的遊戲原型設計

  • 動作管理器設計的核心程式碼參照了潘老師的課程網站
  • 這裡給出裁判類 Referee 的程式碼
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Referee : MonoBehaviour
{
    public int start_priest;
    public int start_devil;
    public int end_priest;
    public int end_devil;
    
    public int[] boat_role_num = {0, 0};

    public int boat_sign;
    
    public Referee(){
        start_devil = 0;
        start_priest = 0;
        end_devil = 0;
        end_priest = 0;
        boat_sign = 0;
    }

    public void set(int sp, int sd, int ep, int ed, int[] brn, int bs){
        start_priest = sp;
        start_devil = sd;
        end_priest = ep;
        end_devil = ed;
        boat_role_num = brn;
        boat_sign = bs;
    }

    public int check()	{

		if (end_priest + end_devil == 6)     
			return 2;	// 勝利

		if (boat_sign == 1)         
		{
			start_priest += boat_role_num[0];
			start_devil += boat_role_num[1];
		}
		else                                  
		{
			end_priest += boat_role_num[0];
			end_devil += boat_role_num[1];
		}
		if (start_priest > 0 && start_priest < start_devil) 
		{      
			return 1;	// 	失敗,岸上牧師人數少於惡魔
		}
		if (end_priest > 0 && end_priest < end_devil)        
		{
			return 1;	// 	失敗,岸上牧師人數少於惡魔
		}
		return 0;                                             
	}
}

專案地址:

傳送門

相關文章