Unity3D实现人物转向与移动
程序员文章站
2022-05-14 22:12:59
在网上有非常多通过射线方式实现的人物行走控制脚本,可是假设仅仅是想通过键盘按键来控制的话。比方进行第三人称视角控制,事实上仅仅须要进行简单的角度变换就可以。思路例如以下:
1、依照顺...
在网上有非常多通过射线方式实现的人物行走控制脚本,可是假设仅仅是想通过键盘按键来控制的话。比方进行第三人称视角控制,事实上仅仅须要进行简单的角度变换就可以。思路例如以下:
1、依照顺时针方向设定前、右、后、左分别为0,1,2,3。
2、设定状态初值0,即朝向前方。
3、通过当前方向值减去前一次方向值,乘以90°即为转向角,然后进行旋转变换就可以。
using unityengine; using system.collections; using system.linq; public class move: monobehaviour { private int state;//角色状态 private int oldstate=0;//前一次角色的状态 private int up = 0;//角色状态向前 private int right =1;//角色状态向右 private int down = 2;//角色状态向后 private int left = 3;//角色状态向左 public float speed=8; void start() { } void update() { if (input.getkey("w")) { setstate(up); } else if (input.getkey("s")) { setstate(down); } if (input.getkey("a")) { setstate(left); } else if (input.getkey("d")) { setstate(right); } } void setstate(int currstate) { vector3 transformvalue = new vector3();//定义平移向量 int rotatevalue = (currstate - state) * 90; transform.animation.play("walk");//播放角色行走动画 switch (currstate) { case 0://角色状态向前时,角色不断向前缓慢移动 transformvalue = vector3.forward * time.deltatime * speed; break; case 1://角色状态向右时。角色不断向右缓慢移动 transformvalue = vector3.right * time.deltatime * speed; break; case 2://角色状态向后时。角色不断向后缓慢移动 transformvalue = vector3.back * time.deltatime * speed; break; case 3://角色状态向左时,角色不断向左缓慢移动 transformvalue = vector3.left * time.deltatime * speed; break; } transform.rotate(vector3.up, rotatevalue);//旋转角色 transform.translate(transformvalue, space.world);//平移角色 oldstate = state;//赋值,方便下一次计算 state = currstate;//赋值,方便下一次计算 } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: php中用unset销毁变量并释放内存
下一篇: Unity3D实现警报灯