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

x域名免费网站百度推广代理商利润

x域名免费网站,百度推广代理商利润,免费云服务器,wordpress 多站点配置前言#xff1a;上一篇实现了角色简单的移动控制#xff0c;但是实际游戏中玩家的视角是可以转动的#xff0c;并根据转动后视角调整移动正前方。本篇实现玩家第一人称视角转动和移动#xff0c;觉得有帮助的话可以点赞收藏支持一下#xff01; 玩家第一人称视角 修复小问…前言上一篇实现了角色简单的移动控制但是实际游戏中玩家的视角是可以转动的并根据转动后视角调整移动正前方。本篇实现玩家第一人称视角转动和移动觉得有帮助的话可以点赞收藏支持一下 玩家第一人称视角 修复小问题-武器反向玩家视角转动和移动视角转动移动控制更新完整代码效果 补充知识鼠标设置 修复小问题-武器反向 上一篇文章武器模型的方向反了武器模型Y方向旋转180度就好了。 玩家视角转动和移动 视角转动 思路分析 FPS游戏中玩家可以通过移动鼠标来旋转视角。 最简单的思路就是获取鼠标移动的值然后修改玩家Player对象的Rotation。 但是直接修改Player的Rotation不对 为什么 修改Player的Rotation的值后移动控制会根据当前视角为前方移动会存在朝着斜上方走的情况。如果是带有玩家模型的话直接Rotation属性来旋转整个Player垂直方向旋转的时候就会让玩家的模型也垂直转动会很诡异。一般都是枪支和手才会参与所有的旋转玩家的身体模型是不会参与垂直。 怎么办 水平Rotation修改Player的垂直Rotation修改Camera的Player挂载CameraCamera挂载Weapon武器有手的话也挂载在相机下面。 这样Player水平旋转带动玩家模型、相机还有武器和手但是相机垂直旋转只会带动武器和手。 调整Player挂载 Player挂载CameraCamera挂载Weapon。 视角移动 补充在我们PlayerController代码中添加两个新的变量用来记录鼠标移动X和Y的累计偏移还有一个Transform变量playerCamera来获取和控制相机的Rotation。 private float x_RotationOffset 0;// 累计x旋转 private float y_RotationOffset 0;// 累计y旋转 public Transform playerCamera;// 这个在Unity中把Camera拖到变量就行 private void PlayerRotation() {// 获取鼠标移动x_RotationOffset Input.GetAxis(Mouse X)* Time.deltaTime * mouseSensitivity;// 水平方向y_RotationOffset Input.GetAxis(Mouse Y)* Time.deltaTime * mouseSensitivity;// 垂直方向// 旋转transform.rotation Quaternion.Euler(new Vector3(0, x_RotationOffset, 0));// Player旋转playerCamera.localRotation Quaternion.Euler(new Vector3(y_RotationOffset, playerCamera.localEulerAngles.y, playerCamera.localEulerAngles.z));// Camera旋转 }视角角度限制 把PlayerRotation()添加到Update中运行后可以发现视角会随着偏移。但是玩家会随着鼠标偏移无限制的旋转视角尤其是垂直视角这并不符合我们FPS游戏体验。 需要对旋转的范围做出一个限制修改PlayerRotation()对垂直视角添加Mathf.Clamp进行限制。 private void PlayerRotation() {// 获取鼠标移动x_RotationOffset Input.GetAxis(Mouse X)* Time.deltaTime * mouseSensitivity;// 水平方向y_RotationOffset Input.GetAxis(Mouse Y)* Time.deltaTime * mouseSensitivity;// 垂直方向// 限制垂直旋转角度y_RotationOffset Mathf.Clamp(y_RotationOffset, -45f, 45f);// 旋转transform.rotation Quaternion.Euler(new Vector3(0, x_RotationOffset, 0));// Player旋转playerCamera.localRotation Quaternion.Euler(new Vector3(y_RotationOffset, playerCamera.localEulerAngles.y, playerCamera.localEulerAngles.z));// Camera旋转 }鼠标锁定 前面虽然实现了随着鼠标转动视角但是会发现没法像真正游戏的第一视角锁定鼠标移动了之后鼠标还是在中间反而会离开屏幕。 在Start()函数部分加入鼠标锁定代码。 Cursor.lockState CursorLockMode.Locked;移动控制更新 会发现视角变了后但是移动的方向的前后左右并没有跟随视角需要对移动控制的代码进行更新。 原先是直接在X、Y和Z分量上直接加入输入的值我们为计算的加入Transformer的方向重新计算输入的值到不同的分量的值。 修改后的PlayerMovement()代码如下 public void PlayerMovement() {// CharacertController的Move函数需要输入一个三维的向量// 每个分量表示三维不同方向前进多少Vector3 moveDirection Vector3.zero;// 获取键盘输入// Horizontal左右移动Vertical前后移动// 加入自身tranform方向moveDirection Vector3.zero;moveDirection transform.forward * Input.GetAxis(Vertical);moveDirection transform.right * Input.GetAxis(Horizontal);m_Controller.Move(moveDirection * Time.deltaTime*speed); }完整代码 PlayerController代码实现了玩家视角移动和转动的所有代码。 public class PlayerController : MonoBehaviour {public CharacterController m_Controller;public Transform playerCamera;public float moveSpeed 6.0F;public float mouseSensitivity 1000.0F;private float x_RotationOffset 0;// 累计x旋转private float y_RotationOffset 0;// 累计y旋转void Start(){m_Controller this.GetComponentCharacterController();Cursor.lockState CursorLockMode.Locked;// 鼠标锁定}void Update(){PlayerRotation();PlayerMovement();}// 控制角色移动public void PlayerMovement(){Vector3 moveDirection Vector3.zero;// 获取键盘输入Horizontal左右移动Vertical前后移动// 加入自身tranform方向moveDirection Vector3.zero;moveDirection transform.forward * Input.GetAxis(Vertical);moveDirection transform.right * Input.GetAxis(Horizontal);// 移动m_Controller.Move(moveDirection * Time.deltaTime*moveSpeed);}// 控制角色视角private void PlayerRotation(){// 获取鼠标移动x_RotationOffset Input.GetAxis(Mouse X)* Time.deltaTime * mouseSensitivity;// 水平方向y_RotationOffset Input.GetAxis(Mouse Y)* Time.deltaTime * mouseSensitivity;// 垂直方向// 限制垂直旋转角度y_RotationOffset Mathf.Clamp(y_RotationOffset, -45f, 45f);// 旋转transform.rotation Quaternion.Euler(new Vector3(0, x_RotationOffset, 0));// Player旋转playerCamera.localRotation Quaternion.Euler(new Vector3(y_RotationOffset, playerCamera.localEulerAngles.y, playerCamera.localEulerAngles.z));// Camera旋转} }效果 补充知识 鼠标设置 可见性 Cursor.visible true; //设置鼠标可见 Cursor.visible false; //设置鼠标不可见锁定 Cursor.lockState CursorLockMode.None;//不锁定自由移动状态 Cursor.lockState CursorLockMode.Locked;//锁定状态第一人称常用 Cursor.lockState CursorLockMode.Confined;//限制状态,鼠标只能在游戏界面内移动形状 菜单-Edit-Project Settings-Player可以设置鼠标图标。
http://www.w-s-a.com/news/494014/

相关文章:

  • 做网站 提交源码 论坛sem分析是什么意思
  • 网站建设与部署阿里云大学百度付费推广有几种方式
  • 作品集怎么做网站个人简历模板免费下
  • 工业网站素材重庆关键词自动排名
  • 拖拽式网站建设费用微网站怎么做的好名字
  • 长沙电信网站备案谷歌推广怎么做最有效
  • 网站建设与管理总结报告华为开发者联盟
  • 门诊部网站建设天空建筑网站
  • 扬州市城乡建设网站高端品牌鞋子有哪些牌子
  • 杭州网站建设招聘网长沙网络销售公司
  • 网站制作一年多少钱免费做电子章网站
  • 信誉好的营销网站建设徐州市铜山新区建设局网站
  • 建行网站关于我们山西seo和网络推广
  • 1m带宽做网站怎么样深圳网站建设制作开发公司
  • 网站建设 服务内容 费用郴州网站建设公司哪里有
  • 网站关键词重要性育才网站建设
  • 网络安全形势下怎么建设学校网站wordpress最新主题下载
  • 自己建设网站需要什么条件.gs域名做网站怎么样
  • 网上做公益的网站推广手机卡返佣平台
  • 网站是公司域名是个人可以南京建设银行官方网站
  • 做互联网网站的会抓百度网盟推广 网站
  • 商务网站开发设计结论微信报名小程序怎么制作
  • 网站建设销售简历wordpress七比2
  • 制作网站报价工程项目查询哪个网站
  • 深圳移动网站建设制作公司网站建设的认识
  • 网站建设脚本语言有哪些想开网店哪个平台好
  • 视频网站用什么做的好深圳的小程序开发公司
  • 南京网站定制开发商城网站免费模板
  • 青海学会网站建设公司照片组合拼图
  • 中国建设银行福清分行网站爱站网权重查询