其实在说摇杆操作之气,需要先确定是镜头(跟随,模式)

官方的 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函数

参考:x​​​​​​​cUnity实现类似于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年重写)相关推荐

  1. 中考计算机IE操作题,信息技术中考历年真题集锦(IE操作)

    五.IE浏览器操作 ①请用IE浏览器访问www.zzxb.edu.cn网站,找到制作小报的评价标准将其包含的五条标准("1.整体感观........层次清晰:[15分]")保存到考 ...

  2. uni-app真机预览调试:关于ios系统真机调试的操作步骤

    介绍: 因手机差异较大,HBuilder并没有提供App的模拟器.不管uni-app或5+App/wap2app项目,都需要连接真实的手机或手机模拟器来运行测试,称之为"真机运行" ...

  3. 【华为机试真题 Python实现】2022年4、5月高频机试题

    文章目录 2022年4.5月高频机试题 机试必须要会的函数 输入输出处理 for 循环 通过下标访问元素 直接迭代访问元素 同时访问下标和元素 while 循环 字符ASSIC码转换 进制转换 绝对值 ...

  4. scratch二进制像素绘制 电子学会图形化编程scratch等级考试三级真题和答案解析2022年3月

    目录 scratch二进制像素绘制 一.题目要求 1.准备工作 2.功能实现 二.案例分析 1.角色分析 2.背景分析 3.前期准备 三.解题思路 1.小猫 2.正方形 四.程序编写 1.小猫 2.正 ...

  5. 荣耀Magic V真机首曝:2022折叠机的引领之作

    前不久,荣耀官方正式宣布,将在2022年1月推出旗下首款折叠屏手机--荣耀Magic V,荣耀CEO赵明此前通过微博表示,荣耀Magic V绝对会是2022年折叠屏手机的引领之作.现在有最新消息,近日 ...

  6. 系统集成项目管理工程师 下午 真题 及考点(2022年四套卷)

    文章目录 2022年下半年 试题一:第10章 项目质量管理,流程图.核查表.帕累托图,7种质量工具,一致性成本和非一致性成本,质量保证和质量控制 试题二:第8章 项目进度管理,工期及关键路径,时标网络 ...

  7. scratch飞翔的小猫 电子学会图形化编程scratch等级考试一级真题和答案解析2022年3月

    目录 scratch飞翔的小猫 一.题目要求 1.准备工作 2.功能实现 二.案例分析 1.角色分析 2.背景分析 3.前期准备 三.实现流程 1.案例分析 2.流程图绘制 四.程序编写 五.考点分析 ...

  8. 游戏里WASD移动控制人物的操作,用js写出的效果,简单易上手!

    游戏里的人物控制需要通过上下键或者WASD键来控制人物的前进后退. 那么我们就来写一个这样的效果吧! 这个效果说简单也很简单无非就是通过按键来操作.code的按键操作. 接下来就上我们的效果图了. 样 ...

  9. 【操作系统】面向真题学操作系统 —— 操作系统概述客观题

    文章目录 1)前言 2)正文 2.1)看完文档总结的思维导图 2.2)横扫试题 2.2.1)代表性试题讲解 ① 操作系统的基本认识 ② 并发和并行 ③ 系统调用 ④ 操作系统分类与发展 ⑤ 操作系统的 ...

最新文章

  1. 东莞.NET技术线下沙龙活动资料分享
  2. HOW-TO:带有Spring MVC的Tomcat中的自定义错误页面
  3. 在Java应用程序中使用密码学
  4. 计算机科学必读书籍_5篇关于数据科学家的产品分类必读文章
  5. 深入了解ASP.NET运行内幕 .txt
  6. mysql搜索结果去重_MySQL去除查询结果重复
  7. RabbitMQ 功能
  8. 1.RESTful Web APIs中文版 --- 网上冲浪
  9. python PPT学习资料分享
  10. 机器人到底会不会有情感?
  11. MFC操作Access数据库
  12. HTML中,使用hover属性完成鼠标悬停切换图片效果
  13. 语音增强算法研究系列笔记 - 语音噪声分类及特点
  14. 12.2版本数据库ORA-20001: Statistics Advisor: Invalid task name for the current user
  15. 力扣刷题 DAY_83 贪心
  16. hiveSQL面试题16__时间序列--构造日期
  17. 一段让你虎躯一震的代码
  18. linux文件读取程序,Linux系统编程:文件的读取写入
  19. mysql 悲观锁 的运用
  20. php 递归 递归方式与算法

热门文章

  1. 【MySQL篇】MySQL下载位置
  2. Java实现上传(支持多个文件同时上传)和下载
  3. Python 语言中有关复数的几个概念
  4. 魔兽worldserver.conf 服务端配置文件说明
  5. 最新深信服面试笔试题
  6. DNS的作用及解析流程
  7. 九九乘法表c语言编程java,九九乘法表(c语言和java语言)+心得
  8. web太极八卦图纯css
  9. 网络安全状况月度报告-2019年6月
  10. 数仓建设之指标体系搭建