如题,我想做一个3d版的贪吃蛇,关于蛇蛇的移动,我有两个方案。(注意,左右为x轴,上下为y轴,前后为z轴)
方案一,蛇蛇初始默认沿z轴正方向移动,按下a键,蛇蛇立刻向左90度转弯,即沿x轴正方向移动,d键则右转,x轴反方向移动。w为z正方向,s为z反方向,q为y正,e为y反。
但这个方案我不是很喜欢,蛇蛇移动太僵硬了,只能90度转。所以我想使用方案二,而我的问题也出在方案二。
方案二,蛇蛇初始默认沿z轴正方向移动,按下a键,蛇蛇向左偏移1度,d键向右偏移一度,(左右即x轴角度变化一度,)w键向上偏移一度,s键向下偏移一度(上下即y轴角度变化一度)。从而实现蛇蛇圆润的转弯和倒车。
但事情并没有我想的那么简单。如果只按左右,能按我预想的移动,只按上下,也能按我预想的移动。但按了左右再按上下,就跑偏了,因为它当前移动的平面不再与yz轴构成的平面重合。
我要怎么实现这个移动算法?