真Unity3d_人物摇杆操作(2022年重写)
其实在说摇杆操作之气,需要先确定是镜头(跟随,模式)
官方的 lookAt,
用的是internal方法(感觉是一个同步的方法,因为lookAt是瞬间,没过渡执行的)
/// <summary>/// <para>Rotates the transform so the forward vector points at worldPosition.</para>/// </summary>/// <param name="worldPosition">Point to look at.</param>/// <param name="worldUp">Vector specifying the upward direction.</param>public void LookAt(Vector3 worldPosition, [DefaultValue("Vector3.up")] Vector3 worldUp) => Transform.INTERNAL_CALL_LookAt(this, ref worldPosition, ref worldUp);
参考
小哥自定义LookAt函数
参考:xcUnity实现类似于LookAt 的功能_光的博客-CSDN博客_lookat 实现
之前很多年前的一些代码
一开始。。。。。一卡一顿的,人物很飘
public Vector3 TickMove(){float fThisMoveSpeed = EntityFSMMoveSpeed;Vector3 sThisSyncDir = EntityFSMDirection;if (m_pcGOSSI.fLastSyncSecond == 0) {m_pcGOSSI.fLastSyncSecond = Time.realtimeSinceStartup;
// sThisSyncDir.z +=45;}float fSyncSecond = m_pcGOSSI.fLastSyncSecond;RealEntity.PlayerRunAnimation();Vector3 realPos2D = new Vector3(objTransform.position.x, 60, objTransform.position.z);//float fAngle = Vector3.Angle(sThisSyncDir, m_pcGOSSI.sLocalSyncDir);//位置计算float fThisRealTimeSinceStartup = Time.realtimeSinceStartup;//float fThisFrameTimeSpan = fThisRealTimeSinceStartup - m_pcGOSSI.fLastSyncSecond;float fThisFrameTimeSpan = fThisRealTimeSinceStartup - fSyncSecond;float fThisSyncDist = fThisMoveSpeed * fThisFrameTimeSpan;Vector3 sNewPos = sThisSyncDir * fThisSyncDist + realPos2D;if (sNewPos.magnitude > 0){objTransform.position = sNewPos;}GameMethod.GetMainCamera.FixedUpdatePosition();m_pcGOSSI.fLastSyncSecond = fThisRealTimeSinceStartup;return sThisSyncDir;}
加了时间因子之后
双线程渲染
(一开始tickmove()方法放在某触发器下,发现并不均匀,现在放在LateUpdate事件里面即可,因为LateUpdate的时间因子是固定的,移动起来看上就不卡了)
例如:currentTime += Time.deltaTime; //这里的deltaTime是固定的
由于45度镜头,需要再调整方向夹角()
(很久之前写的,写的很烂,效果不对,哈哈哈,不要用)
public void TickRotate(Vector3 sThisSyncDir){sThisSyncDir = 15 * sThisSyncDir;//乘大15并没有什么作用,暂时发现这句代码没用的,只是测试用 Quaternion DestQuaternion = Quaternion.LookRotation(sThisSyncDir);Quaternion sMidQuater = Quaternion.Lerp(objTransform.rotation, DestQuaternion, 3 * Time.deltaTime);//在from和to之间插值旋转.objTransform.rotation = sMidQuater;}
public Vector3 TickMove(){float fThisMoveSpeed = EntityFSMMoveSpeed;Vector3 sThisSyncDir = EntityFSMDirection;if (m_pcGOSSI.fLastSyncSecond == 0) {m_pcGOSSI.fLastSyncSecond = Time.realtimeSinceStartup;
// sThisSyncDir.z +=45;}float fSyncSecond = m_pcGOSSI.fLastSyncSecond;RealEntity.PlayerRunAnimation();Vector3 realPos2D = new Vector3(objTransform.position.x, 60, objTransform.position.z);//Vector3 sThisSyncDir = realPos2D;//Vector3 sThisSyncDir = sCrossPoint - realPos2D;//sThisSyncDir.y = 0;//sThisSyncDir = this.ConvertVector3ToDir (sThisSyncDir);//转换角度//不使用单位向量,摇杆幅度越大,应该速度会越快sThisSyncDir.Normalize();sThisSyncDir = Quaternion.AngleAxis(-45, Vector3.up) * sThisSyncDir;//float fAngle = Vector3.Angle(sThisSyncDir, m_pcGOSSI.sLocalSyncDir);//位置计算float fThisRealTimeSinceStartup = Time.realtimeSinceStartup;//float fThisFrameTimeSpan = fThisRealTimeSinceStartup - m_pcGOSSI.fLastSyncSecond;float fThisFrameTimeSpan = fThisRealTimeSinceStartup - fSyncSecond;float fThisSyncDist = fThisMoveSpeed * fThisFrameTimeSpan;Vector3 sNewPos = sThisSyncDir * fThisSyncDist + realPos2D;if (sNewPos.magnitude > 0){objTransform.position = sNewPos;}GameMethod.GetMainCamera.FixedUpdatePosition();m_pcGOSSI.fLastSyncSecond = fThisRealTimeSinceStartup;return sThisSyncDir;}
缺少打击感
对于mmoa,王者荣耀之流的游戏,重在操作流畅和技能准确性,以及服务器和网络的稳定,对实际镜头效果需求不大,一般的镜头即可
最终预计采用《武士2》的后摇镜头
参考资料:
北京unity3d创业团队,对技术有研究,VR,C#等。。。。不错的说
C#程序员整理的Unity 3D笔记(十):Unity3D的位移、旋转的3D数学模型_技术团队博客-CSDN博客
真Unity3d_人物摇杆操作(2022年重写)相关推荐
- 中考计算机IE操作题,信息技术中考历年真题集锦(IE操作)
五.IE浏览器操作 ①请用IE浏览器访问www.zzxb.edu.cn网站,找到制作小报的评价标准将其包含的五条标准("1.整体感观........层次清晰:[15分]")保存到考 ...
- uni-app真机预览调试:关于ios系统真机调试的操作步骤
介绍: 因手机差异较大,HBuilder并没有提供App的模拟器.不管uni-app或5+App/wap2app项目,都需要连接真实的手机或手机模拟器来运行测试,称之为"真机运行" ...
- 【华为机试真题 Python实现】2022年4、5月高频机试题
文章目录 2022年4.5月高频机试题 机试必须要会的函数 输入输出处理 for 循环 通过下标访问元素 直接迭代访问元素 同时访问下标和元素 while 循环 字符ASSIC码转换 进制转换 绝对值 ...
- scratch二进制像素绘制 电子学会图形化编程scratch等级考试三级真题和答案解析2022年3月
目录 scratch二进制像素绘制 一.题目要求 1.准备工作 2.功能实现 二.案例分析 1.角色分析 2.背景分析 3.前期准备 三.解题思路 1.小猫 2.正方形 四.程序编写 1.小猫 2.正 ...
- 荣耀Magic V真机首曝:2022折叠机的引领之作
前不久,荣耀官方正式宣布,将在2022年1月推出旗下首款折叠屏手机--荣耀Magic V,荣耀CEO赵明此前通过微博表示,荣耀Magic V绝对会是2022年折叠屏手机的引领之作.现在有最新消息,近日 ...
- 系统集成项目管理工程师 下午 真题 及考点(2022年四套卷)
文章目录 2022年下半年 试题一:第10章 项目质量管理,流程图.核查表.帕累托图,7种质量工具,一致性成本和非一致性成本,质量保证和质量控制 试题二:第8章 项目进度管理,工期及关键路径,时标网络 ...
- scratch飞翔的小猫 电子学会图形化编程scratch等级考试一级真题和答案解析2022年3月
目录 scratch飞翔的小猫 一.题目要求 1.准备工作 2.功能实现 二.案例分析 1.角色分析 2.背景分析 3.前期准备 三.实现流程 1.案例分析 2.流程图绘制 四.程序编写 五.考点分析 ...
- 游戏里WASD移动控制人物的操作,用js写出的效果,简单易上手!
游戏里的人物控制需要通过上下键或者WASD键来控制人物的前进后退. 那么我们就来写一个这样的效果吧! 这个效果说简单也很简单无非就是通过按键来操作.code的按键操作. 接下来就上我们的效果图了. 样 ...
- 【操作系统】面向真题学操作系统 —— 操作系统概述客观题
文章目录 1)前言 2)正文 2.1)看完文档总结的思维导图 2.2)横扫试题 2.2.1)代表性试题讲解 ① 操作系统的基本认识 ② 并发和并行 ③ 系统调用 ④ 操作系统分类与发展 ⑤ 操作系统的 ...
最新文章
- 东莞.NET技术线下沙龙活动资料分享
- HOW-TO:带有Spring MVC的Tomcat中的自定义错误页面
- 在Java应用程序中使用密码学
- 计算机科学必读书籍_5篇关于数据科学家的产品分类必读文章
- 深入了解ASP.NET运行内幕 .txt
- mysql搜索结果去重_MySQL去除查询结果重复
- RabbitMQ 功能
- 1.RESTful Web APIs中文版 --- 网上冲浪
- python PPT学习资料分享
- 机器人到底会不会有情感?
- MFC操作Access数据库
- HTML中,使用hover属性完成鼠标悬停切换图片效果
- 语音增强算法研究系列笔记 - 语音噪声分类及特点
- 12.2版本数据库ORA-20001: Statistics Advisor: Invalid task name for the current user
- 力扣刷题 DAY_83 贪心
- hiveSQL面试题16__时间序列--构造日期
- 一段让你虎躯一震的代码
- linux文件读取程序,Linux系统编程:文件的读取写入
- mysql 悲观锁 的运用
- php 递归 递归方式与算法