【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了,所以你懂的
这个第一天开发进度大概是这样,我不会告诉你调整控制视角用了超长时间。。。。。
发布评论