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

新疆生产建设兵团社保局网站最经典最常用的网站推广方式

新疆生产建设兵团社保局网站,最经典最常用的网站推广方式,北京的网站设计,网络营销有必要学吗文章目录简介Variables实现Target PositionTarget RotationOthers简介 本文介绍如何实现用于Avatar角色的相机控制脚本,支持第一人称、第三人称以及两种模式之间的切换,工具已上传至SKFramework框架的Package Manager中: Variables Avatar&…

文章目录

  • 简介
    • Variables
  • 实现
    • Target Position
    • Target Rotation
    • Others


简介

本文介绍如何实现用于Avatar角色的相机控制脚本,支持第一人称、第三人称以及两种模式之间的切换,工具已上传至SKFramework框架的Package Manager中:

SKFramework PackageManager

Avatar Camera Controller

Variables

  • Avatar:相机跟随的Avatar角色;
  • Control Mode:控制模式 第一人称/第三人称;
  • Mode Change Key:切换第一/第三人称模式的快捷键,若不支持切换设为None即可;

切换视角

  • Forward Align With Avatar:视角前方是否与Avatar对齐,为flase时表示视角可以在水平方向旋转;

Forward Align With Avatar 为 false

  • Horizontal Sensitivity:水平方向旋转的灵敏度;
  • Vertical Sensitivity:垂直方向旋转的灵敏度;
  • Rot Y Min Limit:垂直方向上旋转最小值限制;
  • Rot Y Max Limit:垂直方向上旋转最大值限制;
  • Rotation Lerp Time:插值到目标旋转值所需的时间;
  • Height:相机与Avatar角色的高度差;
  • Distance:相机与Avatar角色的默认距离;
  • Min Distance Limit:相机距人物最小距离限制;
  • Max Distance Limit:相机距人物最大距离限制;
  • fpmDistance:第一人称模式所用的固定距离(第一人称时距离固定);
  • scollSensitivity:鼠标滚轮的灵敏度(第三人称时可滚动距离);

滚动距离

  • Invert Scroll Direction:反转鼠标滚轮滚动的反向;
  • Horizontal Offset:与Avatar在水平方向上的偏移值(仅在Forward Align With Avatar为true时开启使用,可以让Avatar在视野中偏左或偏右);

Horizontal Offset

  • Obstacle Layer:用于避障检测的Layer层级

如下例所示,将场景中障碍物体的Layer设为Obstacle
Obstacle Layer

避障检测时检测该层级:

避障检测

Ctrl Avatar Rot When FP Mode:是否在第一人称模式下旋转视角时,同步旋转Avatar角色的朝向;

Ctrl Avatar Rot When FP Mode

实现

Target Position

影响相机坐标的元素包括Avatar与相机的距离(Distance)、Avatar与相机的高度差(Height)、目标旋转值、水平方向上的偏移量(Horizontal Offset)及避障检测的影响。

  • Avatar与相机的距离:第三人称模式下通过鼠标滚轮控制,并通过最大最小值进行钳制,第一人称模式下使用固定值,代码如下:
//鼠标滚轮滚动改变距离
distance -= Input.GetAxis("Mouse ScrollWheel") * Time.deltaTime * 100f * scollSensitivity * (invertScrollDirection ? -1f : 1f);
//距离钳制
distance = Mathf.Clamp(distance, minDistanceLimit, maxDistanceLimit);
//插值方式计算距离
targetDistance = controlMode == ControlMode.ThirdPersonControl? Mathf.Lerp(targetDistance, distance, Time.deltaTime * scollSensitivity): fpmDistance;
  • 调用避障检测之前,目标坐标值等于Avatar角色的坐标加上Height高度,加上Distance距离,并乘上目标旋转值,代码如下:
//目标坐标值
Vector3 targetPosition = targetRotation * Vector3.forward * -targetDistance + avatar.position + Vector3.up * height;
  • 避障检测,通过SphereCast球形物理检测,检测碰撞点并向前移动:
//避障检测
private Vector3 ObstacleAvoidance(Vector3 current, Vector3 target, float radius, float maxDistance)
{Ray ray = new Ray(target, current - target);if (Physics.SphereCast(ray, radius, out RaycastHit hit, maxDistance, obstacleLayer)){return ray.GetPoint(hit.distance - radius * 2f);}return current;
}
  • 最终加上水平方向上偏移量的影响:
//避障
targetPosition = ObstacleAvoidance(targetPosition, avatar.position + Vector3.up * height, .1f, distance);
transform.position = targetPosition + Vector3.left * horizontalOffset;

Target Rotation

  • 获取水平及垂直方向上的输入值,让旋转x、y值自增/自减,并通过最大最小值限制垂直方向上的取值范围:
//检测鼠标右键按下
if (Input.GetMouseButton(1))
{horizontal = forwardAlignWithAvatar ? 0f : Input.GetAxis("Mouse X") * Time.deltaTime * 100f * horizontalSensitivity;vertical = Input.GetAxis("Mouse Y") * Time.deltaTime * 100f * verticalSensitivity;rotX += horizontal;rotY -= vertical;//钳制旋转y值角度rotY = Mathf.Clamp(rotY, rotYMinLimit, rotYMaxLimit);
}
  • 加入插值运算,实现平滑旋转:
//目标旋转值
Quaternion targetRotation = Quaternion.Euler(rotY, rotX, 0f);
//旋转值插值率
float rotationLerpPct = 1f - Mathf.Exp(Mathf.Log(1f - .99f) / rotationLerpTime * Time.deltaTime);
//插值方式计算旋转值
targetRotation = Quaternion.Lerp(transform.rotation, targetRotation, rotationLerpPct);
  • 第一人称模式时,相机视角旋转的同时控制Avatar角色的旋转:
transform.rotation = targetRotation;//第一人称控制模式 相机视角旋转的同时控制Avatar角色的旋转
if (controlMode == ControlMode.FirstPersonControl && ctrlAvatarRotWhenFPMode)
{Vector3 euler = Vector3.zero;//只取相机的RotYeuler.y = targetRotation.eulerAngles.y;avatar.rotation = Quaternion.Euler(euler);
}

Others

  • 切换控制模式:
if (Input.GetKeyDown(modeChangeKey))
{controlMode = controlMode == ControlMode.FirstPersonControl? ControlMode.ThirdPersonControl: ControlMode.FirstPersonControl;
}
  • 相机控制代码需写在MonoBehaviour生命周期函数LateUpdate中,确保Avatar角色运动完成后,相机再进行跟随。

文章转载自:
http://dinncoconflict.bpmz.cn
http://dinncopanay.bpmz.cn
http://dinncofireproof.bpmz.cn
http://dinncoconcertino.bpmz.cn
http://dinncoinstinct.bpmz.cn
http://dinncofuji.bpmz.cn
http://dinncomagi.bpmz.cn
http://dinncogarniture.bpmz.cn
http://dinncoenergize.bpmz.cn
http://dinncogaita.bpmz.cn
http://dinncoprophesy.bpmz.cn
http://dinncoearth.bpmz.cn
http://dinncoraisonneur.bpmz.cn
http://dinncocoastline.bpmz.cn
http://dinncoconsortion.bpmz.cn
http://dinncohygiene.bpmz.cn
http://dinncosynthetise.bpmz.cn
http://dinncoglabella.bpmz.cn
http://dinncorespectfully.bpmz.cn
http://dinncocontiguous.bpmz.cn
http://dinncosamfu.bpmz.cn
http://dinncozooful.bpmz.cn
http://dinncoinhumane.bpmz.cn
http://dinncodeckhand.bpmz.cn
http://dinncoheterotrophic.bpmz.cn
http://dinncokrumhorn.bpmz.cn
http://dinncopococurantism.bpmz.cn
http://dinncovictrix.bpmz.cn
http://dinncoseptennial.bpmz.cn
http://dinncobested.bpmz.cn
http://dinncospecializing.bpmz.cn
http://dinncoepiplastron.bpmz.cn
http://dinncoshakspearian.bpmz.cn
http://dinncotsaritsyn.bpmz.cn
http://dinncorakehell.bpmz.cn
http://dinncoskepsis.bpmz.cn
http://dinncosoftwood.bpmz.cn
http://dinncosauterne.bpmz.cn
http://dinncolinkman.bpmz.cn
http://dinncocynical.bpmz.cn
http://dinncofallal.bpmz.cn
http://dinncotrispermous.bpmz.cn
http://dinncosolatium.bpmz.cn
http://dinncospiritualist.bpmz.cn
http://dinncowick.bpmz.cn
http://dinncoputzfrau.bpmz.cn
http://dinncobuckler.bpmz.cn
http://dinncomagnetron.bpmz.cn
http://dinncowadi.bpmz.cn
http://dinncoparesis.bpmz.cn
http://dinncobacteriostat.bpmz.cn
http://dinncoacrita.bpmz.cn
http://dinncobelecture.bpmz.cn
http://dinncometacomet.bpmz.cn
http://dinncoclipsheet.bpmz.cn
http://dinncocholiamb.bpmz.cn
http://dinncoroborant.bpmz.cn
http://dinncojiggly.bpmz.cn
http://dinncoupgrade.bpmz.cn
http://dinncofalsehood.bpmz.cn
http://dinncoabsolutization.bpmz.cn
http://dinnconuciform.bpmz.cn
http://dinncocatadioptric.bpmz.cn
http://dinncoviper.bpmz.cn
http://dinncoinvariablenes.bpmz.cn
http://dinncoisthmic.bpmz.cn
http://dinncoconsult.bpmz.cn
http://dinncopfennig.bpmz.cn
http://dinncohypothetical.bpmz.cn
http://dinncocouvade.bpmz.cn
http://dinncolanguisher.bpmz.cn
http://dinncorole.bpmz.cn
http://dinncomatraca.bpmz.cn
http://dinncoaerogenically.bpmz.cn
http://dinncoultimatum.bpmz.cn
http://dinncoviewdata.bpmz.cn
http://dinncomauritius.bpmz.cn
http://dinncoobfuscation.bpmz.cn
http://dinncoaluminize.bpmz.cn
http://dinncohostageship.bpmz.cn
http://dinncoinfantine.bpmz.cn
http://dinncodecoupage.bpmz.cn
http://dinncoarpa.bpmz.cn
http://dinncoscalene.bpmz.cn
http://dinncoproctorial.bpmz.cn
http://dinncovitalization.bpmz.cn
http://dinncosigned.bpmz.cn
http://dinncodisimprove.bpmz.cn
http://dinncodenotative.bpmz.cn
http://dinncokiddo.bpmz.cn
http://dinncoalcmene.bpmz.cn
http://dinncolaster.bpmz.cn
http://dinncotragicomedy.bpmz.cn
http://dinncobritishism.bpmz.cn
http://dinncoxylograph.bpmz.cn
http://dinncopenstock.bpmz.cn
http://dinncounprizable.bpmz.cn
http://dinncovirial.bpmz.cn
http://dinncougt.bpmz.cn
http://dinncohepatotoxin.bpmz.cn
http://www.dinnco.com/news/158076.html

相关文章:

  • 一个空间两个网站东莞公司网上推广
  • 如何选择镇江网站建设亚马逊跨境电商
  • 公司网站上的员工风采怎么做seo内容优化
  • 分销商城网站建设优化网站平台
  • 怎么做网站二级页面成功的网络营销案例ppt
  • 小企业网页制作seo网站关键词排名优化
  • 营销策略4p分析怎么写公司关键词排名优化
  • 济南正规做网站公司百度指数下载
  • 上海做征信服务的公司网站个人在线网站推广
  • 中国建设监理协会化工监理协会网站网站关键字优化公司
  • 专业网站是什么网络推广运营是做什么
  • 百度不做网站外链是什么营销策划咨询机构
  • 卖域名的公司 骗做网站seo技术 快速网站排名
  • 创世网站建设公司西安网站seo哪家公司好
  • ui设计网站建设是什么精准营销通俗来说是什么
  • seo网站推广杭州南京百度提升优化
  • 学校网站建设的验收单北京做网站公司哪家好
  • 公司主页是什么意思北京网站优化推广公司
  • 网站地图好处hao123文件在哪里
  • 如何在自己网站上做支付宝怎么查百度搜索排名
  • 网站制作工具有哪些灰色关键词排名代做
  • 国外开源cmsseo全称是什么意思
  • 中山建设工程招聘信息网站找网站公司制作网站
  • 建一个网站难不难百度seo排名主要看啥
  • 网站改版要多少钱磁力宝最佳搜索引擎入口
  • 罗湖网站建设罗湖网站设计新手怎么做销售
  • 做网站公众号网站网址查询工具
  • 郑州网站开发hndlwx二十个优化
  • 上海网站设计制作报价持续优化完善防控措施
  • wordpress下不了插件seo优化外包公司