网络暴力与医院游戏设计技术报告
目录
一、 游戏说明
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
上一篇: 小项目平台开发
推荐阅读