【00】

呐,真的是迟来的毕业设计进度的记录嘛,素材设定什么早就OJBK了,来个博客记录下自己开发的进度

毕设设定:

名称【Out of the Wood】

类型【逃生(仿黎明杀机、第五人格)】

风格【低模】

玩家数【1VS4不规则对抗】

玩法内容【逃生者破译密码开启大门逃跑,杀手抓获所有逃生者】

大致是以上内容了!!!

我个人比较喜欢需要什么素材就寻找素材,所以呢!!!前期素材的准备也不是很多~~毕竟一个人开发不能把所有需要使用的素材都能完全想到。

准备的素材如下:


天空盒资源、低模环境包、人类一败涂地开发包(作者在steam创意工坊开放下载该包,比较符合低模所以就拿来了,2333)

因为为了方便测试游戏,所以顺便把屠夫操控视角也提前搞出来,屠夫模型设定


2333,就是hello neighbor的那个邻居,然后自己用maya添加了一把菜刀还有个面具就变成Clown-Killer了


模型动作上,当然是用了傻瓜式操作的mixamo啦!!

挑了几个比较合适的动作。

一切准备就绪,第一天开发开始啦啦啦啦~~~

一、场景搭建

班主任多次强调要分类好,二话不说立马弄好分类先,也方便自己操作,导入素材什么的就省略了,直飞场景搭建部分!!!!


emmmm,,黎明杀机跟第五人格是电大门,我直接就简化了点,直接是大门一个红色透明CUBE,开启大门方式就是破译密码后红色CUBE消失就好了,简单粗暴,动画都不用添加了(23333就是自己懒那个草的风格不太对,而且没有受阴影影响!!我就是要这个效果哇,有草的地方方便让屠夫知道,而且人类是可以躲藏在草丛里面,所以呢~~~)


地图对面的第二个大门,两个大门是必须的,避免杀手守门口形成僵局嘛~~~~


然后就是俯瞰图


第一天就搭建了两个门口,当时是凌晨1点弄到3点多,换了几百块石头看看哪个比较好,处理了一点细节什么的,第一天场景搭建大概就这样了。。。。。

二、杀手(屠夫)控制

呐,前面也说了为了方便测试地图,所以提前弄了个屠夫的控制


视角是第三人称,因为为了测试所以视角比较开阔,游戏设定屠夫视角没有人类的广,人类的视角比较广,方便躲藏,人类是不能攻击的因为!!只能躲着!!!

来看看帅气的正面

,操作方式WSAD不说,鼠标左键是攻击,右键调整视角!!

这里用了摄像机跟随角色、根据鼠标控制视角的方法

void Update(){AnimatorStateInfo stateinfo = animator.GetCurrentAnimatorStateInfo(0);//获取当前动作if ((Input.GetKey(KeyCode.W)) || (Input.GetKey(KeyCode.S)) || (Input.GetKey(KeyCode.A)) || (Input.GetKey(KeyCode.D))){if (!stateinfo.IsName("Attack"))//如果不在攻击,则可以移动,否则禁止移动【这里是添加了判断当前动作是否在执行,如果不添加则会出现在移动中也可以攻击,简直太imba了!!所以判断如果不在攻击状态时才能进行攻击】{if (Input.GetKey(KeyCode.W)){//根据主相机的朝向决定人物的移动方向,下同controller.transform.eulerAngles = new Vector3(0, m_camera.transform.eulerAngles.y, 0);}if (Input.GetKey(KeyCode.S)){controller.transform.eulerAngles = new Vector3(0, m_camera.transform.eulerAngles.y + 180f, 0);}if (Input.GetKey(KeyCode.A)){controller.transform.eulerAngles = new Vector3(0, m_camera.transform.eulerAngles.y + 270f, 0);}if (Input.GetKey(KeyCode.D)){controller.transform.eulerAngles = new Vector3(0, m_camera.transform.eulerAngles.y + 90f, 0);}controller.Move(m_transform.forward * Time.deltaTime * MoveSpeed);}}if (!controller.isGrounded){//主要用模拟重力controller.Move(new Vector3(0, -10f * Time.deltaTime, 0));}}

控制这块是参考网络的控制写法,然后根据自己的需求进行了修改还有修改报错,之前发现人物会凌空行走,然后发现是else if的锅

动画控制部分:

void Update () {AnimatorStateInfo stateinfo = player.GetCurrentAnimatorStateInfo(0);//获取当前动作if (!stateinfo.IsName("Attack")&&Input.GetMouseButtonDown(0))   //如果当前没有执行攻击动作,并且按下鼠标左键则可以进行攻击{player.SetBool("attack", true); //鼠标左键攻击}if (Input.GetMouseButtonUp(0)){player.SetBool("attack", false);    //只执行一次攻击动作}if (Input.GetKey(KeyCode.W)|| Input.GetKeyDown(KeyCode.S) || Input.GetKeyDown(KeyCode.A) || Input.GetKeyDown(KeyCode.D)){player.SetBool("walk", true);}else if (Input.GetKey(KeyCode.D))   //防止用户按多个按键导致行走动画出现播放错误问题{player.SetBool("walk", true);}else if (Input.GetKey(KeyCode.A)){player.SetBool("walk", true);}else if (Input.GetKey(KeyCode.S)){player.SetBool("walk", true);}if (Input.GetKeyUp(KeyCode.W) || Input.GetKeyUp(KeyCode.S) || Input.GetKeyUp(KeyCode.A) || Input.GetKeyUp(KeyCode.D) ){player.SetBool("walk", false);}

比较繁杂,以后再想想怎么优化,就是简单的按键控制动画,这里必须用else if判断按键!!!不然不然!!同时按多个移动,会出现bool条件判断错误!!!!导致动画播放错误!

Animator部分


大致屠夫判断机制就这样,默认idle,然后WSAD就是walking状态,玩家按下鼠标左键进行攻击,然后退出返回idle

这里添加了两个bool类型的条件,判断是否攻击跟移动

大概就这样

has exit time合理设置很关键,移动中立即攻击是不能设置has exit time,不然攻击速度慢的飞起!

然后攻击状态切回到idle又必须设置has exit time,不然攻击CD为0,简直太Imba了,所以你懂的

这个第一天开发进度大概是这样,我不会告诉你调整控制视角用了超长时间。。。。。

【00】

呐,真的是迟来的毕业设计进度的记录嘛,素材设定什么早就OJBK了,来个博客记录下自己开发的进度

毕设设定:

名称【Out of the Wood】

类型【逃生(仿黎明杀机、第五人格)】

风格【低模】

玩家数【1VS4不规则对抗】

玩法内容【逃生者破译密码开启大门逃跑,杀手抓获所有逃生者】

大致是以上内容了!!!

我个人比较喜欢需要什么素材就寻找素材,所以呢!!!前期素材的准备也不是很多~~毕竟一个人开发不能把所有需要使用的素材都能完全想到。

准备的素材如下:


天空盒资源、低模环境包、人类一败涂地开发包(作者在steam创意工坊开放下载该包,比较符合低模所以就拿来了,2333)

因为为了方便测试游戏,所以顺便把屠夫操控视角也提前搞出来,屠夫模型设定


2333,就是hello neighbor的那个邻居,然后自己用maya添加了一把菜刀还有个面具就变成Clown-Killer了


模型动作上,当然是用了傻瓜式操作的mixamo啦!!

挑了几个比较合适的动作。

一切准备就绪,第一天开发开始啦啦啦啦~~~

一、场景搭建

班主任多次强调要分类好,二话不说立马弄好分类先,也方便自己操作,导入素材什么的就省略了,直飞场景搭建部分!!!!


emmmm,,黎明杀机跟第五人格是电大门,我直接就简化了点,直接是大门一个红色透明CUBE,开启大门方式就是破译密码后红色CUBE消失就好了,简单粗暴,动画都不用添加了(23333就是自己懒那个草的风格不太对,而且没有受阴影影响!!我就是要这个效果哇,有草的地方方便让屠夫知道,而且人类是可以躲藏在草丛里面,所以呢~~~)


地图对面的第二个大门,两个大门是必须的,避免杀手守门口形成僵局嘛~~~~


然后就是俯瞰图


第一天就搭建了两个门口,当时是凌晨1点弄到3点多,换了几百块石头看看哪个比较好,处理了一点细节什么的,第一天场景搭建大概就这样了。。。。。

二、杀手(屠夫)控制

呐,前面也说了为了方便测试地图,所以提前弄了个屠夫的控制


视角是第三人称,因为为了测试所以视角比较开阔,游戏设定屠夫视角没有人类的广,人类的视角比较广,方便躲藏,人类是不能攻击的因为!!只能躲着!!!

来看看帅气的正面

,操作方式WSAD不说,鼠标左键是攻击,右键调整视角!!

这里用了摄像机跟随角色、根据鼠标控制视角的方法

void Update(){AnimatorStateInfo stateinfo = animator.GetCurrentAnimatorStateInfo(0);//获取当前动作if ((Input.GetKey(KeyCode.W)) || (Input.GetKey(KeyCode.S)) || (Input.GetKey(KeyCode.A)) || (Input.GetKey(KeyCode.D))){if (!stateinfo.IsName("Attack"))//如果不在攻击,则可以移动,否则禁止移动【这里是添加了判断当前动作是否在执行,如果不添加则会出现在移动中也可以攻击,简直太imba了!!所以判断如果不在攻击状态时才能进行攻击】{if (Input.GetKey(KeyCode.W)){//根据主相机的朝向决定人物的移动方向,下同controller.transform.eulerAngles = new Vector3(0, m_camera.transform.eulerAngles.y, 0);}if (Input.GetKey(KeyCode.S)){controller.transform.eulerAngles = new Vector3(0, m_camera.transform.eulerAngles.y + 180f, 0);}if (Input.GetKey(KeyCode.A)){controller.transform.eulerAngles = new Vector3(0, m_camera.transform.eulerAngles.y + 270f, 0);}if (Input.GetKey(KeyCode.D)){controller.transform.eulerAngles = new Vector3(0, m_camera.transform.eulerAngles.y + 90f, 0);}controller.Move(m_transform.forward * Time.deltaTime * MoveSpeed);}}if (!controller.isGrounded){//主要用模拟重力controller.Move(new Vector3(0, -10f * Time.deltaTime, 0));}}

控制这块是参考网络的控制写法,然后根据自己的需求进行了修改还有修改报错,之前发现人物会凌空行走,然后发现是else if的锅

动画控制部分:

void Update () {AnimatorStateInfo stateinfo = player.GetCurrentAnimatorStateInfo(0);//获取当前动作if (!stateinfo.IsName("Attack")&&Input.GetMouseButtonDown(0))   //如果当前没有执行攻击动作,并且按下鼠标左键则可以进行攻击{player.SetBool("attack", true); //鼠标左键攻击}if (Input.GetMouseButtonUp(0)){player.SetBool("attack", false);    //只执行一次攻击动作}if (Input.GetKey(KeyCode.W)|| Input.GetKeyDown(KeyCode.S) || Input.GetKeyDown(KeyCode.A) || Input.GetKeyDown(KeyCode.D)){player.SetBool("walk", true);}else if (Input.GetKey(KeyCode.D))   //防止用户按多个按键导致行走动画出现播放错误问题{player.SetBool("walk", true);}else if (Input.GetKey(KeyCode.A)){player.SetBool("walk", true);}else if (Input.GetKey(KeyCode.S)){player.SetBool("walk", true);}if (Input.GetKeyUp(KeyCode.W) || Input.GetKeyUp(KeyCode.S) || Input.GetKeyUp(KeyCode.A) || Input.GetKeyUp(KeyCode.D) ){player.SetBool("walk", false);}

比较繁杂,以后再想想怎么优化,就是简单的按键控制动画,这里必须用else if判断按键!!!不然不然!!同时按多个移动,会出现bool条件判断错误!!!!导致动画播放错误!

Animator部分


大致屠夫判断机制就这样,默认idle,然后WSAD就是walking状态,玩家按下鼠标左键进行攻击,然后退出返回idle

这里添加了两个bool类型的条件,判断是否攻击跟移动

大概就这样

has exit time合理设置很关键,移动中立即攻击是不能设置has exit time,不然攻击速度慢的飞起!

然后攻击状态切回到idle又必须设置has exit time,不然攻击CD为0,简直太Imba了,所以你懂的

这个第一天开发进度大概是这样,我不会告诉你调整控制视角用了超长时间。。。。。