成都网站商城建设wordpress 极简

news/2025/9/23 3:04:05/文章来源:
成都网站商城建设,wordpress 极简,哪家做网站性价比高,国家企业信用信息系统我们要控制角色的移动#xff0c;能够所有细节都由自己来实现。控制角色模型的移动#xff0c;同一时候移动摄影机#xff0c;改变视角。当然Unity也提供了一些组件#xff0c;能够让我们做更少的工作#xff0c;实现我们所期望的功能。今天我们就一起系统来学习相关的内容… 我们要控制角色的移动能够所有细节都由自己来实现。控制角色模型的移动同一时候移动摄影机改变视角。当然Unity也提供了一些组件能够让我们做更少的工作实现我们所期望的功能。今天我们就一起系统来学习相关的内容吧。 Charactor Controller(角色控制器) 角色控制器同意你在受制于碰撞的情况下非常easy的进行运动而不用处理刚体。角色控制器不受力的影响只当你调用Move函数时才运动。然后它将运行运动可是受制于碰撞。(---from unity3d官方文档)  我们通常在人物模型上加上这个组件后就能够控制模型的移动了。要注意的一点是。加了角色控制器后他就不受重力影响。所以要自己在move函数中处理重力的情况。即我们要自己出来y轴方向上的速度变化。两个重要的函数1.function SimpleMove (speed : Vector3) : bool 以一定的速度移动。将忽略Y轴上的速度。单位是m/s。重力被自己主动应用。建议每帧仅仅调用一次Move或者SimpleMove。返回值是是否着地。 样例 CharacterController controller GetComponentCharacterController();  Vector3 forward transform.TransformDirection(Vector3.forward);  float curSpeed  speed * Input.GetAxis (Vertical);  ontroller.SimpleMove(forward * curSpeed);   2.function Move (motion : Vector3) : CollisionFlags 通过动力来移动控制器。动力仅仅受限制于碰撞。它将沿着碰撞器滑动。这个函数不应用不论什么重力 假设仅仅是单纯控制玩家的移动那么用Character Controller足够了。假设还涉及到视角的切换。Unity提供了相关的组件。在项目中引入Character ControllerAsset-Import Asset)就能够将角色控制器组件导入我们的项目了。第一人称控制器 经典的游戏CS就是第一人称视角的摄像机就是我们的视角。人物的移动导致视角的移动。(源代码first.unity) 1.删除默认的摄像机 2.新建一个地形Terrain 3.从角色控制器组件中引入 First Person Controller到项目中 4.拖动First Person Controller到合适的位置 我们就能够看到效果了以第一人称的视角移动巡视整个场景。鼠标控制总体视角方向键或者wasdbutton控制摄像机的移动。第三人称控制器 非常多角色扮演游戏wowdota)经常使用到第三人称视角。摄像机离我们的角色保持有一定距离能够具体看到我们所扮演角色的各种行为动作。(源代码third.unity) 1.创建一个地形 2.引入3rd Person Controller组件到项目中 3.改动默认摄像机的Tag为MainCamera 4.选中3rd Person Controller组件将其 Third Person Camera 设置为MainCamera 能够看到效果了能够看到扮演的角色。方向键或者wasd按键能够控制角色的移动同一时候能够发现整个视角也会跟着移动效果图 核心代码解读 第一人称控制器脚本FPSInputController.js function Update () {      //获得键盘或者摇杆上的方向量键盘默认是方向键和wasd键控制方向)      var directionVector  new Vector3(Input.GetAxis(Horizontal), 0, Input.GetAxis(Vertical));            //有方向变化      if (directionVector ! Vector3.zero) {          //取得方向向量的长度          var directionLength  directionVector.magnitude;          //normal 方向向量向量/长度          directionVector  directionVector / directionLength;                    //修正长度不大于1          directionLength  Mathf.Min(1, directionLength);                    //为了效果更明显长度平方扩大          directionLength  directionLength * directionLength;                    //用我们修正后的长度来修正方向向量          directionVector  directionVector * directionLength;      }            // 设置移动的方向      motor.inputMoveDirection  transform.rotation * directionVector;      //设置跳跃默认键盘是空格键      motor.inputJump  Input.GetButton(Jump);  }   第三人称角色控制器ThirdPersonController.js function Update() {      if (!isControllable)      {          // 清除全部的输入假设不处于控制          Input.ResetInputAxes();      }      //按了跳跃键      if (Input.GetButtonDown (Jump))      {          //设置按下跳跃键的时间          lastJumpButtonTime  Time.time;      }      //控制角色的方向      UpdateSmoothedMovementDirection();      //处理重力      ApplyGravity ();      // 处理跳跃逻辑      ApplyJumping ();      //计算实际的动作移动方向和重力方向的      var movement  moveDirection * moveSpeed  Vector3 (0, verticalSpeed, 0)  inAirVelocity;      movement * Time.deltaTime;      // 移动角色      var controller : CharacterController  GetComponent(CharacterController);      collisionFlags  controller.Move(movement);      // 动画处理      if(_animation) {          if(_characterState  CharacterState.Jumping) //跳跃          {              if(!jumpingReachedApex) {//没到达最高点继续向上                  _animation[jumpPoseAnimation.name].speed  jumpAnimationSpeed;                  _animation[jumpPoseAnimation.name].wrapMode  WrapMode.ClampForever;                  _animation.CrossFade(jumpPoseAnimation.name);              } else {//到了最高点速度方向改变                  _animation[jumpPoseAnimation.name].speed  -landAnimationSpeed;                  _animation[jumpPoseAnimation.name].wrapMode  WrapMode.ClampForever;                  _animation.CrossFade(jumpPoseAnimation.name);                             }          }           else           {              if(controller.velocity.sqrMagnitude  0.1) {//没有方向移动                  _animation.CrossFade(idleAnimation.name);//空暇状态              }              else               {                  if(_characterState  CharacterState.Running) {//奔跑                      _animation[runAnimation.name].speed  Mathf.Clamp(controller.velocity.magnitude, 0.0, runMaxAnimationSpeed);                      _animation.CrossFade(runAnimation.name);                      }                  else if(_characterState  CharacterState.Trotting) {//疾走                      _animation[walkAnimation.name].speed  Mathf.Clamp(controller.velocity.magnitude, 0.0, trotMaxAnimationSpeed);                      _animation.CrossFade(walkAnimation.name);                     }                  else if(_characterState  CharacterState.Walking) {//普通走动                      _animation[walkAnimation.name].speed  Mathf.Clamp(controller.velocity.magnitude, 0.0, walkMaxAnimationSpeed);                      _animation.CrossFade(walkAnimation.name);                     }                                }          }      }      //在地上      if (IsGrounded())      {          //旋转方向          transform.rotation  Quaternion.LookRotation(moveDirection);                    }         else      {          //在空中忽略y轴旋转          var xzMove  movement;          xzMove.y  0;          if (xzMove.sqrMagnitude  0.001)          {              transform.rotation  Quaternion.LookRotation(xzMove);          }      }         // 跳跃状态刚好到达地面      if (IsGrounded())      {          //记录到达地面的时间          lastGroundedTime  Time.time;          //空中的速度设置为0          inAirVelocity  Vector3.zero;          //更改相关状态          if (jumping)          {              jumping  false;              SendMessage(DidLand, SendMessageOptions.DontRequireReceiver);          }      }  }   第三人控制器摄像机脚本ThirdPersonCamera.js function Apply (dummyTarget : Transform, dummyCenter : Vector3)  {      // 没有目标      if (!controller)          return;      //目标中心和顶点      var targetCenter  _target.position  centerOffset;      var targetHead  _target.position  headOffset;      //计算目标旋转角度和当前角度      var originalTargetAngle  _target.eulerAngles.y;      var currentAngle  cameraTransform.eulerAngles.y;      // 调整目标的真实角度      var targetAngle  originalTargetAngle;       //按了Fire2alt)摄像机的方向改变会加快      if (Input.GetButton(Fire2))          snap  true;            if (snap)      {          // 靠近角色了重置snap           if (AngleDistance (currentAngle, originalTargetAngle)  3.0)              snap  false;          //计算当前角度          currentAngle  Mathf.SmoothDampAngle(currentAngle, targetAngle, angleVelocity, snapSmoothLag, snapMaxSpeed);      }      // Normal 摄像机动作      else      {          //延迟一点时间          if (controller.GetLockCameraTimer ()  lockCameraTimeout)          {              targetAngle  currentAngle;          }          // 向后走的时候锁住摄像机          if (AngleDistance (currentAngle, targetAngle)  160  controller.IsMovingBackwards ())              targetAngle  180;//旋转180          //插值改变相机角度          currentAngle  Mathf.SmoothDampAngle(currentAngle, targetAngle, angleVelocity, angularSmoothLag, angularMaxSpeed);      }      //当跳跃时      // When jumping dont move camera upwards but only down!      if (controller.IsJumping ())      {          // 计算目标的高度          var newTargetHeight  targetCenter.y  height;          if (newTargetHeight  targetHeight || newTargetHeight - targetHeight  5)              targetHeight  targetCenter.y  height;      }      // 走动时改变高度      else      {          targetHeight  targetCenter.y  height;      }      // 计算当前高度      var currentHeight  cameraTransform.position.y;      currentHeight  Mathf.SmoothDamp (currentHeight, targetHeight, heightVelocity, heightSmoothLag);      // 按角度旋转、      var currentRotation  Quaternion.Euler (0, currentAngle, 0);      //更新相机位置      cameraTransform.position  targetCenter;      cameraTransform.position  currentRotation * Vector3.back * distance;      // 设置相机的高度      cameraTransform.position.y  currentHeight;      //摄像机一直朝向目标      SetUpRotation(targetCenter, targetHead);  }   总结角色控制能够方便的控制游戏的视角。在非常多游戏中能够直接使用该组件降低我们的反复开发工作 远吗pan.baidu.com/s/1BwArJ 參考文档 http://unity3d.com/learn 转载于:https://www.cnblogs.com/blfshiye/p/3802883.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/911187.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

佛山外贸网站制作湖南人文科技学院怎么样

1.设置app图标右上角的数字2.设置状态栏的属性(样式、是否要显示)3.打开某个链接\发短信\打电话4.keyWindow : 访问程序的主窗口(一个程序只能有一个主窗口)5.windows : 访问程序中的所有窗转载于:https://www.cnblogs.com/gatsby…

做英文网站公司获取网站访问者qq号

数据分析是使用统计和计算机科学技术来解决现实世界问题的过程。Python是一种流行的编程语言,也是数据分析的常用工具之一。在Python中,有许多库和工具可用于数据分析,比如NumPy、Pandas、Matplotlib等。 NumPy是Python中用于科学计算的一个…

网站 内容建设存在的问题3d效果图教程网站

with opne("text.txt", encoding"utf8") as f, open("text2.txt", encoding"utf8") as f2 : pass with代码块执行完就自动close文件、转载于:https://www.cnblogs.com/somethingintheway/p/9789650.html

音乐网站整站程序做网站建设需要会哪些

今年以来,家政市场需求持续增长,市场规模达到了万亿级别,家政服务行业成为了热门行业之一! 家政服务种类目前逐渐呈现了多样化,月嫂、保姆、做饭保洁、收纳、维修等家政种类不断出现,满足了居民日益增长的…

基础精品课程网站做网站设计文字大小怎么设定

文章目录 前言一、如何找到自己的勋章?二、如何获得更多勋章?三、重点勋章、易得勋章介绍&推荐1.创作能手2.五一创作勋章3.创作纪念日IT一周年勋章4.新秀勋章5.话题达人6.128天创作纪念日(IT博客专属)7.GitHub绑定勋章8.其他 …

网站建设的定位是什么排名检测

目前数据挖掘已经成为各种应用领域的重要技术,大学数据挖掘课程的开放已经出现。数据挖掘课程整合了多门学科知识。该课程包括各种理论知识,也离不开相关的实用技术。整个教学过程是培养和提高学生全面创新和解决问题的能力。过去,教学过程理…

网站建设在线商城建设网站赚钱的方法

与模拟数据通信相比较,数字数据通信具有下列优点: a. 来自声音、视频和其他数据源的各类数据均可统一为数字信号的形式,并通过数字通信系统传输 b. 以数据帧为单位传输数据,并通过检错编码和重发数据帧来发现与纠正通信错误&am…

西安博达网站建设邮箱163登录

支付宝是全球领先的独立第三方支付平台,致力于为广大用户提供安全快速的电子支付/网上支付/安全支付/手机支付体验,及转账收款/水电煤缴费/信用卡还款/AA收款等生活服务应用。 支付宝不仅是一个支付工具,也是一个数字生活平台,通过…

商用图片的网站嘉兴本地推广网站有哪些

一、前言 场景:公司需要搭建FTP服务器,供内网之前可以互相传递数据,安全稳定,需要满足开通多个账号,每个用户上传的文件有自己对应的文件目录。 这里建议:用户目录Disk尽量大一点,避免因为空间不…

wp怎么做双语网站学校建设网站目标

转自:http://blog.csdn.net/gueter/archive/2007/03/08/1524447.aspx Author :Jeffrey 引言 HTTP 是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990…

东莞网站建设开发怎么在电脑上用手机app软件

Istio可观测性 image-20231129072302901 前言 Istio 为网格内所有的服务通信生成详细的遥测数据。这种遥测技术提供了服务行为的可观测性,使运维人员能够排查故障、维护和优化应用程序,而不会给开发人员带来其他额外的负担。通过 Istio,运维…

评价一个网站wordpress 主题没有样式表

1、这篇文章我们简要讨论一些Gin框架 主要是给大家一个基本概念 1、Gin主要是分为路由和中间件部分。 Gin底层使用的是net/http的逻辑,net/http主要是说,当来一个网络请求时,go func开启另一个协程去处理后续(类似epoll)。 然后主协程持续…

吴桥做网站价格自己开发一个app需要多少钱

写在开头 在当今信息爆炸的时代,海量的数据如同一座沉默的宝库,等待着我们挖掘和理解。然而,这些庞大的数据集本身可能令人望而生畏。在这个时候,数据可视化成为了解数据、发现模式和传达信息的强大工具。本篇博客将带领你探索数据可视化的奇妙世界,学习如何在python中使…

网站做301跳转的好处千牛网站上的店铺推广怎么做

1.不要听“亲朋好友”的话,他们只会让你成为“平凡人”。 2.不要只会“用功读书”,重要的是“要读对书”。  3.不要只是“努力工作”,重要的是“做对工作”。   4.不要指示结交“志趣相投”的朋友,否则你永远只看到…

公司管理系统网站徐州做网站最好的公司

(本帖在版工的旧 Blog 中,发表日期为 2007/04/06) (本帖有些 Hyperlink 是连到台湾的网站,若无法连结,麻烦请留言反应)从 ADO.NET 1.x 开始,DataReader 就可以在单一次的查询动作中,「批次 (batch)」读取 T-SQL 语句以…

自助建站系统是怎么实现深圳勘察设计协会

内容 JDK7时间相关类JDK8时间相关类 第一章 Date类 1.1 Date概述 java.util.Date类 表示特定的瞬间,精确到毫秒。 继续查阅Date类的描述,发现Date拥有多个构造函数,只是部分已经过时,我们重点看以下两个构造函数 public Dat…

网站中文域名好吗wordpress添加模版

随着新能源汽车的普及,充电桩作为新能源汽车的基础设施,其安全性和可靠性越来越受到人们的关注。为了更好地保障充电桩的安全运行与站场管理,TSINGSEE青犀&触角云推出了一套新能源汽车充电桩视频汇聚管理与视频监控方案。 方案采用高清摄…

为什么都用dw做网站wordpress邮箱插件漏洞

最近又有网友遇到在windows2008服务器上安装ORACLE软件时到2%就卡住不动的问题,下面是该网友的描述:oralce 11g r2 windows server 2008 R2安装到最后一步复制数据文件时卡到2% 不走了内存一直飙升求解决这个问题前段时间也有人遇到过,但是他…

山东专业网站解决方案制作诸城人才网招聘网

文章目录 操作流程:前置:Docker和K8S安装版本匹配查看0.1:安装指定docker版本 **[1 — 7] ** [ 配置K8S主从集群前置准备操作 ]一:主节点操作 查看主机域名->编辑域名->域名配置二:安装自动填充,虚拟…

淘宝实时优惠券网站怎么做的网站怎样做

文章目录 1 基本原理2 最优划分属性选择2.1 信息增益选择最优属性方法2.2 信息增益率选择最优属性方法——C4.5决策树2.3 基尼指数选择最优属性——CART决策树 3 剪枝处理3.1 预剪枝3.2 后剪枝 决策树是一种常用的机器学习算法,它模拟了人类决策过程中的思考方式。想…