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[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)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容