真Unity3d_人物摇杆操作
来源:互联网 发布:问卷录入软件 编辑:程序博客网 时间:2024/05/21 22:27
一开始。。。。。一卡一顿的,人物很飘
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#等。。。。不错的说
http://blog.csdn.net/sxbluebird/article/details/43225401
0 0
- 真Unity3d_人物摇杆操作
- 真Unity3d_四元数Quaternion
- 真UNITY3D_一些脚本
- Unity3D_混合树控制人物奔跑
- 真unity3d_关于设计模式
- 真Unity3d_我们如何做技术选型
- 真Unity3d_基于profiler的优化
- 真Unity3d_关于基本GameObject的查找
- 真Unity3d_到底要怎么开始学
- 真Unity3d_我的AR初体验
- 真Unity3d_场景开发_Probuilder入门
- 模拟摇杆操作
- 真Unity3d_基于profiler的优化(三)
- 真UNITY3D_自己做编辑器?红孩儿工具?解构UFPS
- 真Unity3d_从错误里好像看出了点东西
- 真Unity3d_关于AR的Camera一点冷知识
- 摇杆
- 摇杆
- PHP中使用Redis长连接笔记
- C语言实现 词频统计
- linux技術清單
- power designer 16.5 批量输出表格和视图到excel
- 在Eclipse中tomcat不部署项目启动正常,部署一个项目启动报异常
- 真Unity3d_人物摇杆操作
- 《计算几何》听课小笔记>
- 建议6 区别readonly和const的使用方法
- javascript中面向对象特性、对象的创建方式及对象属性的特性
- 《谷歌和亚马逊如何做产品》读后感
- 【转载】【实验】验证通过create table as select 方式无法创建主键小实验
- 1127. ZigZagging on a Tree (30)
- 计算机网络之数据链路层(笔记)
- 1