找回密码
 立即注册
查看: 279|回复: 0

游戏开发学习笔记(四)-大一项目实战(一)角色控制脚本 ...

[复制链接]
发表于 2022-11-26 21:58 | 显示全部楼层 |阅读模式
一周没更,不是要跑路,是期中考试前的紧急自救= =大学第一次考试,真的挺紧张,工数和线代,我谢谢你们。
       讲一下我们这个项目。小组挂名的一共有三人,分别是一个策划(组长),一个程序(我),一个美术,除此之外还有一个因为感兴趣而不挂名参加的学姐,负责美术。到今天大一项目的立项报告组长已经写完了,各种设定已经定下了很多,但似乎没有再到这里复制粘贴的必要。简单来说就是个2d类银河恶魔城游戏。
       今天就先写上一部分角色控制脚本的内容。(其实也不是完全按照需求写的,主要还是一个练习)
动画状态机



角色的精灵暂且用的是asset store上下载的免费资源,动画状态机是资源自带的。不过为了达到练习效果我还是把参数按照自己的习惯重写了一下
各种变量

把临时能想到的需要的变量分下类



玩家关心的数值属性



计时和计数器



一些物体和组件



玩家输入



角色状态

获取输入



当然不用这个应该也是可以的,但是这样我觉得会更清晰一些……


接下来就可以实现具体的功能了
行走

水平移动



这里idle其实是指枚举中其他成员之外的所有状态,包括待机、行走、跳跃等。除此之外没什么好说的。
面朝方向的控制



刚开始这里的判断条件写的是刚体的水平方向速度与物体x轴比例的积小于零,但实际效果并不理想。把刚体的水平方向速度换成键盘的水平输入之后效果好了不少
跳跃和掉落





输入缓冲

将瞬间的输入判定延长成一段时间
比如说玩家在角色即将落地但还不能跳跃的时候按下跳跃,就很有可能出现“我明明按跳了怎么没跳起来啊魂淡”这种痛苦的感觉。而输入缓冲可以在一个较短的时间段里记住玩家按下了跳跃键,并在可以跳跃的时候立即进行跳跃
缓冲时间如果过短,玩家体验就会和没有输入缓冲的时候没什么差别;缓冲时间过短,玩家就会觉得角色常常比自己操作的多执行一次动作。我在这里设定的缓冲时间是0.3秒


土狼时间



“趁牛顿不注意”
玩家在角色从平台掉落后的极短时间内按下跳跃键,仍然判定为从地面起跳
我在这里没有通过离开地面之后的时间,而是通过刚体竖直方向的速度判定,并用一个名为hyenas的bool变量储存结果。效果应该是相近的





输入缓冲和土狼时间扩展了地面起跳的判定

地面检测

地面检测的方法其实很多,我选择了给角色加了几个带有collider2D组件的子物体作为检测器





每个子物体都挂载一个用于地面检测的脚本

之后在控制玩家的脚本里获取检测器(为了确保检测器的顺序正确,我没敢直接用Get ComponentsInChildren,而是在直接unity中把检测器逐个拖进去)






<hr/>以上为个人学习笔记,欢迎指错,欢迎给出优化方案

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-24 18:52 , Processed in 0.063455 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表