U3D-移动、朝向-根据当前摄像机的变化来调整方向
2018-02-01 19:47
465 查看
备注
项目中因需要制作类似王者荣耀的移动和脸朝方向如:王者荣耀中的马可波罗,他的射击时的:移动、脸朝向是分开的
代码
// author : jave.lin // date : 2018-02-01 private void _update3() { // move var move = moveInput; // moveInput是虚拟摇杆的当前x,y操作分量的Vector2对象,用于控制移动的 var face = faceInput; // faceInput同上,用于控制脸朝向的 if ( move.x != 0 || move.y != 0 ) { var sp = speed * Time.deltaTime; var vec = new Vector3( move.x, 0, move.y ); var newRotation = new Vector3(0, camera.transform.eulerAngles.y, 0); // 根据镜头旋转Y分量的欧拉 vec = Quaternion.Euler( newRotation ) * vec; // 旋转一下当前摇杆中的向量vec Quaternion q = Quaternion.LookRotation( vec ); // 再将这个与镜头y分量同旋转两的vec转为四元数q transform.position += q * Vector3.forward * sp; // 在用q坐乘vector3,将q的变化应用到vector3.forward中,得到最后的向量方向,最后在将单位方向乘以 sp,速度标量,来作为每帧的位移量 if (animationStateCtrl.getStateByVec(move, face) != 4 ) // 因为这些代码是我自己在测试项目中些的,这里代码不是关键,就不搬过来了,这个方法是,通过:move, face两个操作方向来算出当前用的是什么的动作状态值,4是退后走 { // 如果不是退后走的动画状态 transform.rotation = q; // 使用移动的方向来冬至 } else { // 如果退后走的话,将人的脸朝向与face的四元数旋转方向一致 _updateFace( face ); } } else { // 如果移动方向没控制话,将人的脸朝向与face的四元数旋转方向一致 _updateFace( face ); } } private void _updateFace( Vector2 face ) { var faceVec = new Vector3( face.x, 0, face.y ); if ( faceVec.x != 0 || faceVec.z != 0 ) { var faceNewRotation = new Vector3( 0, camera.transform.eulerAngles.y, 0 ); faceVec = Quaternion.Euler( faceNewRotation ) * faceVec; Quaternion faceQ = Quaternion.LookRotation( faceVec ); transform.rotation = faceQ; } }
相关文章推荐
- google map 定位当前位置和根据手机的方向调整在地图的方向
- 从零开始重写KOK1(万王之王1) —— (3)优化玩家移动与精确8方向朝向
- unity在shader中获取当前摄像机的方向向量
- 根据移动速度方向判断手势方向
- Unity鼠标出屏幕后 摄像机跟随鼠标方向移动
- 一个可根据当前文本调整自身长度的CStatic派生类
- Unity教程之-让物体朝摄像机Camera观察方向移动(一)
- [Phonegap+Sencha Touch] 移动开发48 扩展的NavigationView控件,支持根据不同的View显示不同的顶栏按钮、不同的屏幕方向,增加视图缓存机制
- 箭头发射后根据重力 4000 来决定箭头的朝向旋转方向
- jquery隔行换色和鼠标移动、离开当前行颜色变化
- Ext TreePanel:根据窗口大小变化调整自身大小
- Unity 点乘(Dot)、叉乘(Cross)判断移动方向、朝向等向量问题
- C# 根据图片exif调整方向
- [Unity基础]让物体朝摄像机观察方向移动(一)
- js/css 检测移动设备方向的变化 判断横竖屏幕
- 根据点中坐标,调整怪物动作方向
- JS和css实现检测移动设备方向的变化并判断横竖屏幕
- 根据当前职务调整当前目标
- C#实现根据图片的EXIF自动调整图片方向
- 一些有关Android图片的操作,判断方向,旋转,根据uri获取绝对路径,缩放与移动