欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

网络暴力与医院游戏设计技术报告

程序员文章站 2022-04-19 20:25:33
...
                         目录

一、 游戏说明
1、 游戏介绍
2、 游戏主题
3、 游戏玩法
二、 素材来源
三、 Unity版本
四、 具体技术实现
五、 游戏插件

一、 游戏说明
二、 素材来源
场地素材来源于一个恐怖逃脱类游戏Horror Game Kit场景
链接:https://m.tb.cn/h.em6ix9U?sm=535f63
场景内各种贴图均为小组成员自己创作
NPC丧尸模型来源于丧尸游戏Horror Stories“Poor Tom”
链接:https://m.tb.cn/h.eOwjmy9?sm=70f593

三、 Unity版本
Unity 2018.4.6f1 (64-bit)

四、 具体技术实现

1、 场景布置
各处墙面上都可以有一些关于网络暴力的句子,作为背景。

进右手第一个门,之后在走手边第一个能进去的门进去之后:
网络暴力与医院游戏设计技术报告

1、这里面的椅子上放一个丧尸,在玩家看到3秒后,开始出来追玩家角色

网络暴力与医院游戏设计技术报告网络暴力与医院游戏设计技术报告

2、黑板上加一段文字“丧尸即将追赶你”
网络暴力与医院游戏设计技术报告
网络暴力与医院游戏设计技术报告

右手第二间:

2.显示屏上显示遗嘱两个字(要明显),走进之后弹出一段文字,显示未完的遗属交代起因。(最后以一句残句结束表现出被强行打断)
网络暴力与医院游戏设计技术报告
4、右手边的墙显示(暴徒血字):医院崇洋媚外,我等替天行道。

网络暴力与医院游戏设计技术报告网络暴力与医院游戏设计技术报告
楼梯口左边一个房间
6、这些椅子中间放一个桌子,桌子上放一本“暴徒日记”。走进弹出内容

网络暴力与医院游戏设计技术报告
楼梯下面:
7、左边的箱子上放个柜子(明显有钥匙孔的那种),走进弹出一段文字(保险柜被锁着,需要钥匙打开,里面貌似有一些东西),然后显示是否打开,只有在玩家有钥匙的情况下才能打开,如果没有钥匙,玩家选择打开,则显示“您缺少钥匙”。打开后显示一段文字(医生的工作记录,里面是比较详尽的真实过程)
进入场景左手边第一个门:
8、柜子里塞一个钥匙,开着的柜子里塞一个比较明显的钥匙。

进入场景左手边第一个门再往里面一个们里面走,进入后,再进右手边第一个门:
9、床下面放一个比较褶皱的日记,病人拼死保下来的病人日记,交代比较简略的过程

10玩家可随时按下ESC键,选择退出医院,向上级汇报(做一些选择题,表明是否已了解医院发生事情的真实起因、过程、结果),根据是否正确,决定游戏是否成功。

11、最后,弹出一段文字,“不要被网络暴力下的表象所迷惑,要自己去探索思考,而不是人云亦云轻信谣言,甚至为了自己的利益对别人实施网络暴力”

2、 主角移动—双摇杆系统
双摇杆系统用到了EasyTouch插件,前进和后退用到的是EasyTouch自带的脚本,控制视野角度的摇杆脚本为自己写的,代码如下
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Move : MonoBehaviour
{

public ETCJoystick lookJoystick;
public float sensitivityX = 10F;
public float sensitivityY = 10F;
public float minimumY = -60F;
public float maximumY = 60F;
float rotationY = 0F;
// Use this for initialization
void Start()
{

    lookJoystick = ETCInput.GetControlJoystick("lookJoystick");
}

// Update is called once per frame
void Update()
{

    if (lookJoystick.axisX.axisValue != 0 || lookJoystick.axisY.axisValue != 0)
    {
        float rotationX = transform.localEulerAngles.y + lookJoystick.axisX.axisValue * sensitivityX;
        rotationY += lookJoystick.axisY.axisValue * sensitivityY;
        rotationY = Mathf.Clamp(rotationY, minimumY, maximumY);
        transform.localEulerAngles = new Vector3(-rotationY, rotationX, 0);
    }

}

}
3、 声音
共有三种:背景雨声、开门声、事件触发声音
声音脚本
using UnityEngine;
using System.Collections;

public class FootStepSound : MonoBehaviour {
public RaycastHit hit;
public GameObject RayGo;
public AudioClip[] clipsMetal, clipsTree, clipsGrass, clipsDirt, clipsWater;
public float dist = 2;
private string tagProv;
private int j, go = 0, go1 = 0, go2 = 0, go3 = 0, go4 = 0;
public AudioSource AS;
public float PitchWalk, PitchRun;
// Use this for initialization
void Start () {

}

// Update is called once per frame
void Update () {
	if(Input.GetKey(KeyCode.LeftShift) && Input.GetKey(KeyCode.W)) 
		AS.pitch = PitchRun;
	else
		AS.pitch = PitchWalk;
	
	if(Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.D))
	{if(Physics.Raycast(RayGo.transform.position, Vector3.down, out hit, dist))
		{if(hit.collider)
				if (hit.collider.tag == "Metal")
				if(go == 0)
					AS.clip = null;
						go = 1;}
					if(!AS.isPlaying)
					{
						AS.clip = clipsMetal[Random.Range(0,clipsMetal.Length)];
						AS.Play();
					}
					go1 = 0;
					go2 = 0;
					go3 = 0;
					go4 = 0;
				}
				else if (hit.collider.tag == "Tree")
				{
					if(go1 == 0)
					{
						AS.clip = null;
						go1 = 1;
					}
					if(!AS.isPlaying)
					{
						AS.clip = clipsTree[Random.Range(0,clipsTree.Length)];
						AS.Play();
					}
					go = 0;
					go2 = 0;
					go3 = 0;
					go4 = 0;
				} 
				else if (hit.collider.tag == "Grass")
				{
					if(go2 == 0)
					{
						AS.clip = null;
						go2 = 1;
					}
					if(!AS.isPlaying)
					{
						AS.clip = clipsGrass[Random.Range(0,clipsGrass.Length)];
						AS.Play();
					}
					go = 0;
					go1 = 0;
					go3 = 0;
					go4 = 0;
				}
				else if (hit.collider.tag == "Dirt")
				{
					if(go3 == 0)
					{
						AS.clip = null;
						go3 = 1;
					}
					if(!AS.isPlaying)
					{
						AS.clip = clipsDirt[Random.Range(0,clipsDirt.Length)];
						AS.Play();
					}
					go = 0;
					go1 = 0;
					go2 = 0;
					go4 = 0;
				}

网络暴力与医院游戏设计技术报告
4、 灯光
场景里面用到了很多灯光,但是整体场景光线偏暗,为了衬托暴力后医院的恐怖场面
网络暴力与医院游戏设计技术报告
5、 动态文字
本次比赛名称动态显示在游戏中

五、 游戏插件
摇杆系统 EasyTouch5,获取及参考资料均来源于SiKi学院对于该插件教程
链接:http://www.sikiedu.com/course/91/tasks

相关标签: 项目开发