当前位置: 首页 > news >正文

做场景秀的网站网站的seo

做场景秀的网站,网站的seo,高端网站建设方案报价,网站在线建站上一篇中我们完成了不借助第三方插件实现手游的虚拟摇杆,现在借助这个虚拟摇杆来实现控制角色的移动。 虚拟摇杆实际上就给角色输出方向,类似于键盘的WSAD,也是一个二维坐标,也就是(-1,1)的范围,将摇杆的方向进行归一化…

上一篇中我们完成了不借助第三方插件实现手游的虚拟摇杆,现在借助这个虚拟摇杆来实现控制角色的移动。

虚拟摇杆实际上就给角色输出方向,类似于键盘的WSAD,也是一个二维坐标,也就是(-1,1)的范围,将摇杆的方向进行归一化传递给角色即可,创建一个名为PlayerManager的脚本,通过Character组件来控制角色的移动。这里在上一篇文章在一. Unity实现虚拟摇杆及屏幕自适应功能,讲述过了,这里拖拽的时候将位移的向量归一化后传递给角色,松手的时候归0.

 mUIEvtListener.OnPointerUpEvent += (eventData =>{mPointImg.transform.localPosition = mDefaultPos;mPointImg.SetActiveState(false);mDirImg.transform.localPosition = mDefaultPos;PlayerManager.Instance.SetPlayerDir(Vector2.zero);});mUIEvtListener.OnDragFunc += (eventData =>{Vector2 dir = eventData.position - mStartPos;float length = dir.magnitude;PlayerManager.Instance.SetPlayerDir(dir.normalized);if (length > mTouchMaxDir){Vector2 clampDir = Vector2.ClampMagnitude(dir, mTouchMaxDir);mPointImg.transform.position = mStartPos + clampDir;}else{mPointImg.transform.position = eventData.position;}});

在PlayerManager中就是一些常规操作,设置方向,这里用了一个Vector2.SignedAngle的API,其作用就是返回传入向量和目标向量之间的角度,我们设定的目标向量是(0,1)也就是二维向量的正前方,下面画了一张图,应该会很清楚。其中为什么要+mCamTrans.eulerAngles.y,是因为相机是倾斜的照着角色,摄像机于角色之间有一个相对角度,是为了能够确保玩家的移动方向与摄像机视角一致,不论摄像机朝哪个方向,玩家的输入都能按照当前摄像机的视角调整角色的朝向。

在这里插入图片描述

 public class PlayerManager : Component<PlayerManager>{private const float TouchSpeed = 5;private CharacterController mCC;private Animator mAnim;private Vector2 mDir;private Transform mCamTrans;private Vector3 mOffset;private float mCurAnimSpeed;private float mTargerAnimSpeed;private const float AccelerSpeed = 5;public override void IStart(){base.IStart();mCC = GetComponent<CharacterController>();mAnim = GetComponentInChildren<Animator>();mCamTrans = Camera.main.transform;mOffset = transform.position - mCamTrans.transform.position;}public override void IUpdate(){base.IUpdate();if (mDir != Vector2.zero){SetDir();SetMove();SetCamera();}}/// <summary>/// 通过摇杆控制玩家方向/// </summary>/// <param name="dir"></param>public void SetPlayerDir(Vector2 dir){if (dir != Vector2.zero){mDir = dir;SetAnimSpeed(1);}else{mDir = Vector2.zero;SetAnimSpeed(0);}}private void SetDir(){float angle = Vector2.SignedAngle(mDir, new Vector2(0, 1)) + mCamTrans.eulerAngles.y;transform.eulerAngles = new Vector3(0, angle, 0);}private void SetMove(){mCC.Move(transform.forward * Time.deltaTime * TouchSpeed);}private void SetCamera(){mCamTrans.transform.position = transform.position - mOffset;}}
}

在这里插入图片描述
最后简单设置一下角色的动画,将Idle和Run进行一个简单的混合,通过插值的形式,让当前的Speed以平缓的过渡到目标值。

   public class PlayerManager : Component<PlayerManager>{private float mCurAnimSpeed;private float mTargerAnimSpeed;private const float AccelerSpeed = 5;public override void IUpdate(){base.IUpdate();if (mDir != Vector2.zero){SetDir();SetMove();SetCamera();}if (mCurAnimSpeed != mTargerAnimSpeed){UpdateAnimFixed();}}private void SetAnimSpeed(float speed){mTargerAnimSpeed = speed;}private void UpdateAnimFixed(){if (Mathf.Abs(mCurAnimSpeed - mTargerAnimSpeed) > AccelerSpeed){mCurAnimSpeed = AccelerSpeed;}else if(mCurAnimSpeed > mTargerAnimSpeed){mCurAnimSpeed -= Time.deltaTime * AccelerSpeed;}else if(mCurAnimSpeed< mTargerAnimSpeed){mCurAnimSpeed += Time.deltaTime * AccelerSpeed;}mAnim.SetFloat("Speed",mCurAnimSpeed);}}

测试运行结果如下:
在这里插入图片描述

http://www.yidumall.com/news/61553.html

相关文章:

  • 水泵网站站群建设批量优化网站软件
  • 做英文兼职的网站百度seo优化哪家好
  • 国外photoshop素材网站seo免费诊断电话
  • 怎么使用电脑是做网站网站推广要点
  • 南充网站建设设计略奥交换链接营销成功案例
  • 建设网站几种方法网上推广
  • 做公司网站哪个好如何优化seo技巧
  • php网站只能打开首页电商培训内容有哪些
  • 在国外做盗版电影网站亿驱动力竞价托管
  • 做企业网站报价山东进一步优化
  • wordpress后台拿webshell的方法电脑网络优化软件
  • 网站开发价格表河南推广网站的公司
  • 网站建设合同书下载湖南网站建设推广优化
  • 做网站筹钱需要多少钱广州推动优化防控措施落地
  • 大连做网站谁家售后好百度学术免费查重入口
  • 网站开发工程师swot分析正规微商免费推广软件
  • 南庄九江网站建设西安seo顾问
  • 网站导航结构seo推广方案怎么做
  • 网站开发作业网络营销渠道策略
  • 网站留言模板搜索引擎优化seo应用
  • 建网站程序怎么写自助建站系统
  • 福建 建设网站建设网站的基本流程
  • 网站建设 服务器怎么才能建立一个网站卖东西
  • 网站申请支付宝接口合肥网络seo推广服务
  • 建设网站需要体现的流程有哪些内容百度经验怎么赚钱
  • 没有网站可以icp备案seo小白入门教学
  • 模板网站哪家靠谱黑帽seo排名优化
  • 广州越秀区核酸检测点查询seo关键词优化怎么做
  • 设计一套网页要多少钱排名优化公司口碑哪家好
  • 大兴快速网站建设哪家好seo代理计费系统