xiangtingsl 发表于 2022-11-8 19:19

3D游戏编程blog4

一、 基本操作演练

· 下载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 { (start.GetRoleNum()), (end.GetRoleNum()) };      int[] devil_num = new int { (start.GetRoleNum()), (end.GetRoleNum()) };      if (priest_num + devil_num == 6)            return 2;      int[] boat_role_num = boat.GetRoleNumber();      if (boat.GetBoatSign() == 1)      {            priest_num += boat_role_num;            devil_num += boat_role_num;      }      else      {            priest_num += boat_role_num;            devil_num += boat_role_num;      }      if (priest_num > 0 && priest_num < devil_num)      {            return 1;      }      if (priest_num > 0 && priest_num < devil_num)      {            return 1;      }      return 0;    }    void Start()    {    }    void Update()    {    }}
动作分离需要将move的Monobehavior单独分离出来,并且将其他代码进行微小修改。
具体效果和上次作业相同。
项目的代码链接:hw4/priest and demons 2.0 · 灬蔷薇绅士灬/3D - 码云 - 开源中国 (gitee.com)
页: [1]
查看完整版本: 3D游戏编程blog4