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

网站建设用模板好吗温州快建网站

网站建设用模板好吗,温州快建网站,企业seo网络营销,合肥个人建站模板文章目录简介实现Avatar FBX Import SettingsAnimator SettingsOn Animator IKCalculate IK Position RotationBody PositionApply IK Position Rotation简介 通过Unity内部的Mecanim动画系统实现的FootIK功能#xff0c;效果如图所示#xff0c;左右分别为开启… 文章目录简介实现Avatar FBX Import SettingsAnimator SettingsOn Animator IKCalculate IK Position RotationBody PositionApply IK Position Rotation简介 通过Unity内部的Mecanim动画系统实现的FootIK功能效果如图所示左右分别为开启和关闭FootIK的效果 初版1.0.0代码已上传至SKFramework框架PackageManager中 相关变量说明 Enable Foot Ik是否启用FootIKFoot Ik Pass Layer IndexAnimator启用IKPass对应的层级Layer Mask射线检测时所有的层级Body Y Offset身体Y坐标的偏移量Body Position Lerp Speed身体坐标插值的速度Foot Position Lerp Speed脚部坐标插值的速度Raycast Distance射线检测的最大距离Raycast Origin Height射线检测的高度 实现 Avatar FBX Import Settings Animation Type 需要Humanoid人形动画 Avatar Configuration确保配置正确 Animator Settings Foot IK相应的Animator State中需要开启Foot IK IK Pass相应的Animator Layer中需要开启IK Pass通道 On Animator IK 动画IK回调函数Unity Documentation中这样介绍OnAnimatorIK() 在即将更新其内部反向动力学系统前由动画器组件调用。该回调可用于设置反向动力学目标的位置及其各自的权重。 参数LayerIndex指的是Animator中的Layer层级的索引值。 如何设置IK目标的位置及其权重需要用到Animator中的函数 SetIKPosition设置一个IK Goal的位置SetIKPositionWeight设置IK Goal的过渡权重0表示IK之前的原始动画1表示在goalSetIKRotation设置一个IK Goal的旋转SetIKRotationWeight设置IK Goal的旋转权重 Calculate IK Position Rotation 如何获取IK目标位置及旋转可以通过在脚部加上一定单位的高度上向下进行Raycast射线检测RaycastHit中的point碰撞点即是IK的目标位置并且通过normal法线方向获得IK的目标旋转代码如下所示 #region 计算左脚IK //左脚坐标 leftFootPosition animator.GetBoneTransform(HumanBodyBones.LeftFoot).position; leftFootPosition.y transform.position.y raycastOriginHeight;//左脚 射线检测 leftFootRaycast Physics.Raycast(leftFootPosition, Vector3.down, out RaycastHit hit, raycastDistance raycastOriginHeight, layerMask); if (leftFootRaycast) {leftFootIkPosition leftFootPosition;leftFootIkPosition.y hit.point.y bodyYOffset;leftFootIkRotation Quaternion.FromToRotation(transform.up, hit.normal); #if UNITY_EDITOR//射线Debug.DrawLine(leftFootPosition, leftFootPosition Vector3.down * (raycastDistance raycastOriginHeight), Color.yellow);//法线Debug.DrawLine(hit.point, hit.point hit.normal * .5f, Color.cyan); #endif } else {leftFootIkPosition Vector3.zero; } #endregionBody Position 在设置IK目标位置之前需要先计算和调整身体的高度原因如下图所示当射线检测到的IK Position腿的长度达不到时需要将身体的Y坐标减去相应距离。 身体高度通过Animator中的bodyPosition去调整 代码如下所示 #region 身体 if (leftFootRaycast rightFootRaycast) {//左脚坐标Y差值float leftPosYDelta leftFootIkPosition.y - transform.position.y;//右脚坐标Y差值float rightPosYDelta rightFootIkPosition.y - transform.position.y;//身体坐标Y差值取二者最小值float bodyPosYDelta Mathf.Min(leftPosYDelta, rightPosYDelta);//目标身体坐标Vector3 targetBodyPosition animator.bodyPosition Vector3.up * bodyPosYDelta;//插值运算targetBodyPosition.y Mathf.Lerp(lastBodyPositionY, targetBodyPosition.y, bodyPositionLerpSpeed);//设置身体坐标animator.bodyPosition targetBodyPosition; } //缓存身体Y坐标 lastBodyPositionY animator.bodyPosition.y; #endregionApply IK Position Rotation 求得目标位置和旋转并调整完身体高度后应用目标位置和旋转即可 #region 应用左脚IK //权重 animator.SetIKPositionWeight(AvatarIKGoal.LeftFoot, 1f); animator.SetIKRotationWeight(AvatarIKGoal.LeftFoot, 1f);Vector3 targetIkPosition animator.GetIKPosition(AvatarIKGoal.LeftFoot); if (leftFootRaycast) {//转局部坐标targetIkPosition transform.InverseTransformPoint(targetIkPosition);Vector3 world2Local transform.InverseTransformPoint(leftFootIkPosition);//插值计算float y Mathf.Lerp(lastLeftFootPositionY, world2Local.y, footPositionLerpSpeed);targetIkPosition.y y;lastLeftFootPositionY y;//转全局坐标targetIkPosition transform.TransformPoint(targetIkPosition);//当前旋转Quaternion currRotation animator.GetIKRotation(AvatarIKGoal.LeftFoot);//目标旋转Quaternion nextRotation leftFootIkRotation * currRotation;animator.SetIKRotation(AvatarIKGoal.LeftFoot, nextRotation); } animator.SetIKPosition(AvatarIKGoal.LeftFoot, targetIkPosition); #endregion
http://www.dnsts.com.cn/news/30352.html

相关文章:

  • 制作游戏网站电商关键词查询工具
  • wordpress 作品集网站怎么做淘宝客网站推广
  • 梅州市住房与城乡建设局网站百度地图驾车ar实景导航
  • 做网站的就业前景郑州做网站茂睿科技
  • 网站系统报价方案模板下载seo整站优化哪家好
  • 创意赣州网站建设网站是什么时候出现的
  • 做海淘网站赚钱吗怀化网站建设有哪些
  • 做海报需要用到什么网站素材网络营销推广方法是什么和什么的合理利用
  • 工作室 网站 备案wordpress添加轮播图
  • 只做绿色食品的网站wordpress集成微博登陆
  • 易云巢做网站公司动漫电影做英语教学视频网站有哪些
  • 网站网页链接青岛工程建设管理信息网官方网站
  • 国外哪些网站可以注册域名南通专业做网站
  • 太原网站建设 网站制作网站建设自查情况报告
  • 成都 网站开发公司服务好的高端网站建设报价
  • 什么网站做唱歌主播绵阳网站建站
  • 网站模块建设建议网址软件下载
  • 网站建设公司建设建设网站前的目的
  • 建设网站费用评估百度关键词排名用什么软件
  • 用啥网站做首页门店库存管理软件
  • 张家港外贸网站设计上海计算机培训机构
  • 微信网站需要备案吗wordpress 优秀插件
  • 外贸网站如何做推广怎么样如何增加网站转化率
  • 寻找网站建设公司企业的网站建设策划书
  • 网站上传权限问题网址导航该如何推广
  • 白云做网站要多少钱服装设计师怎么学
  • 陕西省教育类网站前置审批广州购物网站公司地址
  • 网站开发软件是什么专业wordpress 皮肤
  • 广州网站建设网站制作公司新开传奇网站刚开
  • 网站301如何做厦门礼品网站商城制作案例