Unity3D:实现人物转向与移动
来源:互联网 发布:网络棋牌赌博如何举报 编辑:程序博客网 时间:2024/05/17 03:31
在网上有很多通过射线方式实现的人物行走控制脚本,但是如果只是想通过键盘按键来控制的话,比如进行第三人称视角控制,其实只需要进行简单的角度变换即可。思路如下:
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;//赋值,方便下一次计算}}
0 0
- Unity3D:实现人物转向与移动
- Unity3D 人物移动控制
- 关于unity3D人物鼠标移动(初步实现)
- Unity3D 人物移动 摄像机跟随
- Unity3d 键盘控制人物移动
- Unity3d实现人物跳跃
- Android 简单游戏实现笑脸的移动与人物移动
- unity3d模型运动转向移动简单控制
- unity3d之鼠标控制人物移动
- Unity3d制作虚拟按钮控制人物移动
- Unity3D下 仙剑奇侠传三 人物移动及视角控制的尝试实现及补充
- Unity3D自学笔记——架构应用(八)人物移动与角色相机的跟随
- Unity3d 5.x 学习笔记(2)—— 键盘控制物体移动与转向 (move and rotate)
- Unity3D 控制角色移动,转向和自动跟随
- Unity3d人物与墙壁碰撞问题求解
- Unity3D人物控制移动脚本编写及分析
- unity3d--人物移动(RPG游戏黑暗之光)
- Unity3D游戏场景之鼠标点击地面控制人物移动
- 懒加载未用就关闭sessio--n的异常---面试问的-org.hibernate.LazyInitializationException: could not initialize proxy -
- little endian 和big endian问题全面解读
- php编译时undefined reference to `libiconv_open'解决办法
- linux 基本命令
- string 对象与 C 风格字符串的混用
- Unity3D:实现人物转向与移动
- hadoop 伪分布安装
- 并查集 LA 3644
- MVC#概述
- shell脚本中如何获取命令的参数(2) ----处理命令参数
- 朴素贝叶斯分类器
- vmware 无法通过物理机器ping通?
- 用JavaScript写的一个自定义弹出式对话框
- 今天调试项目dwr中出现session error的错误