unity3D:RPG游戏常见的移动方式

U3D中实现移动的方式有很多,在RPG游戏中大家常见的移动方式其实主要是两种,第一种要么就是第一人称要么就是相机在人物后面跟随人物,也是类似于第一人称只不过把相机后移了,基本上FPS的游戏都是这种,还有一些注重于动作格斗的游戏也是这样,通过一个直观的视角让人有身临其境的感觉。二一种则是有点像上帝视角,类似与MOBA游戏,玩家是处于一个俯视的视角,当然,它是一个有一定倾斜度的俯视角,国内很多的MMO其实都是这种方式。

两者之间的差别其实就在与参考坐标系,第一人称的移动方式要以自身坐标系为参考,屏幕始终以你的脸的朝向为标准。而在俯视角中屏幕不会因为人物的脸朝向而去改变朝向,它是以世界坐标作为参考,你往前走看到的是你的背面,你转过看到的则是你的正面。

想要实现这两种移动方式首先都需要获取到你的键盘和鼠标的输入。现在大家默认的一般都是WASD为角色前后左右移动,用鼠标来控制镜头。获取键盘鼠标的输入方式也很简单,unity中已经帮我们设置好了这些参数,可以去往首选项的输入管理中查看。

键盘上的AD为Horizontal即水平方向的输入,WS为Vertical即竖直方向的输入

鼠标的横向和纵向分别是 Mouse X 和Mouse Y,滚轮是Mouse ScrollWheel

Vector3 MoveMent,cameraControl;
moveMent.Set(Input.GetAxis("Horizontal"),0,Input.GetAxis("Vertical"));//获取WASD的移动数据
cameraControl.Set(Input.GetAxis("Mouse X"),Input.GetAxis("Mouse Y"),Input.GetAxis("Mouse ScrollWheel"));//获取鼠标的移动数据

通过这两个三维的变量就可以获取到我们键盘和鼠标的输入了

俯视视角的移动就直接用上面得到的数据即可,因为我们获取的就是世界坐标系的坐标

ctor.SimpleMove(moveMent*speed*Time.deltatime);//ctor是角色控制器

另一种移动方式则需要先把世界坐标转化为自身坐标再来移动

Vector3 Dir = transform.TransformDirection(moveMent);
ctor.SimpleMove(Dir*speed*Time.deltaTime);

猜你喜欢

转载自blog.csdn.net/m0_61777011/article/details/124509836