当前位置: 移动技术网 > IT编程>开发语言>c# > Unity3D实现人物转向与移动

Unity3D实现人物转向与移动

2020年03月09日  | 移动技术网IT编程  | 我要评论

在网上有非常多通过射线方式实现的人物行走控制脚本,可是假设仅仅是想通过键盘按键来控制的话。比方进行第三人称视角控制,事实上仅仅须要进行简单的角度变换就可以。思路例如以下:

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;//赋值,方便下一次计算
 }
 
 
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网