一、 基本操作演练
· 下载Fantasy Skybox Free,构建自己的游戏场景
从unity assets store中下载所需要的资源
新建一个shader为skybox/6sides的天空盒并添加纹理,设置为skybox material,效果如下
新建Terrian,添加树木预制,草坪纹理等,创建自己的场景。
· 写一个简单的总结,总结游戏对象的使用
空对象:是不显示却最常用的游戏对象,可用于放置场景控制脚本,生成该场景所需的游戏对象。
摄像机:用于控制游戏场景的视角与游戏对象的渲染。
天空盒:用于控制游戏界面中的天空背景。
光源:用于调节游戏界面中不同地方的明暗程度。
地形:用于创建陆地、山川、河流、小径等地理结构,打造用户的游戏场景。
音源:用于管理游戏过程中的背景音乐,达到想要的听觉效果。
3D 物体:是游戏中具体的可视化对象,具有一定的立体形态与材质纹理。
二、编程实践 牧师与魔鬼动作分离版
要求:设计一个裁判类,当游戏到达结束条件时,通知场景控制器游戏结束。
裁判类只需要将原有的controller中的check函数单独分出为一个judge类即可,代码如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using ModelController;
public class Judge
{
LandModel start;
LandModel end;
BoatModel boat;
public Judge(LandModel start_, LandModel end_, BoatModel boat_)
{
start = start_;
end = end_;
boat = boat_;
}
public int Check()
{
int[] priest_num = new int[2] { (start.GetRoleNum())[0], (end.GetRoleNum())[0] };
int[] devil_num = new int[2] { (start.GetRoleNum())[1], (end.GetRoleNum())[1] };
if (priest_num[1] + devil_num[1] == 6)
return 2;
int[] boat_role_num = boat.GetRoleNumber();
if (boat.GetBoatSign() == 1)
{
priest_num[0] += boat_role_num[0];
devil_num[0] += boat_role_num[1];
}
else
{
priest_num[1] += boat_role_num[0];
devil_num[1] += boat_role_num[1];
}
if (priest_num[0] > 0 && priest_num[0] < devil_num[0])
{
return 1;
}
if (priest_num[1] > 0 && priest_num[1] < devil_num[1])
{
return 1;
}
return 0;
}
void Start()
{
}
void Update()
{
}
}
动作分离需要将move的Monobehavior单独分离出来,并且将其他代码进行微小修改。
具体效果和上次作业相同。
项目的代码链接:hw4/priest and demons 2.0 · 灬蔷薇绅士灬/3D - 码云 - 开源中国 (gitee.com)