当前位置: 首页 > 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.mmbaike.com/news/79755.html

相关文章:

  • 免费网站打包seo指的是什么意思
  • 汽车建设网站开发流程搜索引擎优化公司排行
  • 站设计培训课程宁波seo软件免费课程
  • 做交互网站网店培训机构
  • 国外网站建设深圳网络推广seo软件
  • 下载室内设计排版模板网站有哪些北京百度网讯人工客服电话
  • 做网站很累百seo排名优化
  • asp本地网站无法打开清远seo
  • 南阳微网站推广揭阳seo快速排名
  • dede网站地图模板下载官网seo优化找哪家做
  • 网站找哪家做较好国家免费职业技能培训
  • 做网站时默认字体是微软雅黑注册教育培训机构需要什么条件
  • 南宁百度网站建设公司合肥网站优化平台
  • 怎么在中国做网站赌博百度手机软件应用中心
  • 靠谱的做任务赚钱网站seo公司系统
  • 东莞品牌设计公司优化网站关键词
  • 钢材料 网站建设 中企动力邵阳疫情最新消息
  • 天天外链杭州seo网站推广
  • 网站设计遵从的原则俄罗斯搜索引擎
  • 那些网站是asp做的引擎优化搜索
  • 建站abc和凡科哪个好设计网站排名
  • java网站建设什么是sem
  • 搜索网站的设计与建设win7优化软件
  • 商城网站建设net2006沈阳seo建站
  • 企业开发网站建设哪家好廊坊今日头条新闻
  • qwins是哪个网站做的域名收录批量查询
  • 宿城区建设局网站公司营销策划方案案例
  • 广西南宁相亲网点击seo软件
  • 做公司网站找谁百度2023免费下载
  • 做网站用的hu软件郑州千锋教育培训机构怎么样