Home Forums GAMES104 现代游戏引擎:从入门到实践 上下楼梯相关的问题 Reply To: 上下楼梯相关的问题

#12782 Score: 0
Diandy
Participant

看了一下,落地检测时是先给人物的z坐标加1.0,之后再探测-z方向1.005单位长度以内有没有发生碰撞。不知道为啥会加1.0,但大概明白就是假如人物-z方向0.005以内未发生碰撞,则人物处于未落地状态,跳跃状态变为falling,从而触发跳跃动画。
目前我的想法是,通过检测上楼时碰撞的法向量方向是否水平,从而将落地检测所检查的高度增加,让脚下即使悬空出一定高度,也不会被判断为未落地状态。但是当下楼时,问题又来了:因为让上下楼梯时的落地检查的高度增加了,所以下楼梯时z坐标不会减小导致人物悬空,除非悬空超过了一个台阶的高度从而使人物变为未落地状态而触发重力下降。但重力是由跳跃状态决定的,所以如果在不修改其他部分的情况下使用重力改变下楼梯时的z坐标,那势必也会触发跳跃动画。
所以我想的是:利用上下楼梯时落地检测的碰撞法向量,与人物移动方向做点积,假如为负,则为下楼梯,假如为正,则为上楼梯。如果是下楼梯的话,就让final_position的z坐标减去一定值,从而让小人下楼梯的同时也能够下降高度。