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

安徽中擎建设公司网站上海做得好的网站建设公司

安徽中擎建设公司网站,上海做得好的网站建设公司,wordpress自定义小工具插件,四川中天建设有限公司网站最终效果 前言 使用CharacterController实现3d角色控制器#xff0c;之前已经做过很多了#xff1a; 【unity小技巧】unity最完美的CharacterController 3d角色控制器#xff0c;实现移动、跳跃、下蹲、奔跑、上下坡、物理碰撞效果#xff0c;复制粘贴即用 【unity实战】C…最终效果 前言 使用CharacterController实现3d角色控制器之前已经做过很多了 【unity小技巧】unity最完美的CharacterController 3d角色控制器实现移动、跳跃、下蹲、奔跑、上下坡、物理碰撞效果复制粘贴即用 【unity实战】Cinemachine虚拟相机Character Controller实现俯视角、第三人称角色控制复制粘贴即用 有的人就会问了使用Rigidbody要怎么做呢这不就来了本文主要是使用新版输入系统Input SystemRigidbody实现第三人称人物控制器我就不做特别复杂了其他内容欢迎大家自行补充。因为我也不是很推荐大家使用RigidbodyCharacterController 其实已经可以满足我们开发中的所有需求了。Rigidbody定义一些CharacterController自带的功能真的非常麻烦比如爬坡走楼梯等等所以我这里主要只是带大家了解一下并不会深入研究。 使用Input System获取玩家输入 参考【推荐100个unity插件之18】Unity 新版输入系统Input System的使用看这篇就够了 我这里直接使用Player Input组件生成的默认的Input Actions映射 新增脚本获取玩家输入 /// summary /// 玩家输入 /// /summary public class PlayerInput : MonoBehaviour {// 用于存储移动输入的向量public Vector2 MoveInput { get; private set; }// 用于存储视角输入的向量public Vector2 LookInput { get; private set; }public bool ChangeCameraWasPressedThisFrame{get; private set; }//是否按下切换相机private InputActions _input;private void OnEnable(){_input new InputActions();_input.Player.Enable();_input.Player.Move.performed SetMove;_input.Player.Move.canceled SetMove;_input.Player.Look.performed SetLook;_input.Player.Look.canceled SetLook;}private void OnDisable(){_input.Player.Move.performed - SetMove;_input.Player.Move.canceled - SetMove;_input.Player.Look.performed - SetLook;_input.Player.Look.canceled - SetLook;_input.Player.Disable(); }private void SetMove(InputAction.CallbackContext context){MoveInput context.ReadValueVector2();}private void SetLook(InputAction.CallbackContext context){LookInput context.ReadValueVector2();} }人物添加刚体 添加刚体配置参数 控制角色移动 新增脚本控制角色移动对这里的AddRelativeForce不太了解的小伙伴可以查看我这篇文章 【unity小技巧】常用的方法属性和技巧汇总长期更新 public class PlayerController : PlayerInput {Rigidbody _rb;[Header(移动)][SerializeField] float _speed 1000f;// 移动的速度private void Awake(){_rb GetComponentRigidbody();}private void FixedUpdate(){PlayerMove();}// 计算并应用玩家的移动private void PlayerMove(){// 根据输入和速度计算移动向量_playerMoveInput new Vector3(MoveInput.x, 0, MoveInput.y).normalized * _speed;// 将相对力应用到刚体上_rb.AddRelativeForce(_playerMoveInput, ForceMode.Force);} }配置 效果 手搓代码控制相机视角 修改PlayerInput [Header(相机视角控制)] public Transform CameraFollow;// 用于跟随摄像机的 Transform private Vector3 _playerLookInput;// 玩家视角输入 private float _playerRotation;// 角色旋转角度 private float _cameraPitch;// 摄像机俯仰角度 [SerializeField] float _rotationSpeed 180.0f;// 角色旋转速度 [SerializeField] float _pitchSpeed 180.0f;// 摄像机俯仰速度private void Awake() {_rb GetComponentRigidbody();mainCamera Camera.main; // 获取主相机 }private void Update() {_playerLookInput new Vector3(LookInput.x, -LookInput.y, 0f) * Time.deltaTime;// 获取视角输入PlayerLook(); // 更新角色的旋转PitchCamera(); // 更新摄像机的俯仰角度 }// 更新角色的旋转 private void PlayerLook() {_playerRotation _playerLookInput.x * _rotationSpeed;_rb.rotation Quaternion.Euler(0f, _playerRotation, 0f); }// 更新摄像机的俯仰角度 private void PitchCamera() {Vector3 rotationValues CameraFollow.rotation.eulerAngles;_cameraPitch _playerLookInput.y * _pitchSpeed;_cameraPitch Mathf.Clamp(_cameraPitch, -89.9f, 89.9f);//限制俯仰视角角度CameraFollow.rotation Quaternion.Euler(_cameraPitch, rotationValues.y, rotationValues.z); }配置相机为角色的子物体 效果 最终代码 using UnityEngine;public class PlayerController : PlayerInput {Rigidbody _rb;[Header(移动)]Vector3 _playerMoveInput;// 玩家移动向量[SerializeField] float _speed 1000f;// 移动的速度[Header(相机视角控制)]public Transform CameraFollow;// 用于跟随摄像机的 Transformsprivate Vector3 _playerLookInput;// 玩家视角输入private float _playerRotation;// 角色旋转角度private float _cameraPitch;// 摄像机俯仰角度[SerializeField] float _rotationSpeed 180.0f;// 角色旋转速度[SerializeField] float _pitchSpeed 180.0f;// 摄像机俯仰速度private Camera mainCamera; // 主相机private void Awake(){_rb GetComponentRigidbody();mainCamera Camera.main; // 获取主相机}private void Update(){_playerLookInput new Vector3(LookInput.x, -LookInput.y, 0f) * Time.deltaTime;// 获取视角输入PlayerLook(); // 更新角色的旋转PitchCamera(); // 更新摄像机的俯仰角度}private void FixedUpdate(){PlayerMove();}// 计算并应用玩家的移动private void PlayerMove(){// 根据输入和速度计算移动向量_playerMoveInput new Vector3(MoveInput.x, 0, MoveInput.y).normalized * _speed;// 将相对力应用到刚体上_rb.AddRelativeForce(_playerMoveInput, ForceMode.Force);}// 更新角色的旋转private void PlayerLook(){_playerRotation _playerLookInput.x * _rotationSpeed;_rb.rotation Quaternion.Euler(0f, _playerRotation, 0f);}// 更新摄像机的俯仰角度private void PitchCamera(){Vector3 rotationValues CameraFollow.rotation.eulerAngles;_cameraPitch _playerLookInput.y * _pitchSpeed;_cameraPitch Mathf.Clamp(_cameraPitch, -89.9f, 89.9f);//限制俯仰视角角度CameraFollow.rotation Quaternion.Euler(_cameraPitch, rotationValues.y, rotationValues.z);} }源码 很遗憾源码我并不想免费分享我也建议大家能自己手动去敲代码逐步实现和理解每一块功能。项目实现所涉及的主要功能思路和代码我也已经毫无保留的分享在文章中了当然如果你真的需要的话源码我也放出来了收个辛苦费就当作你对我不断创作的支持。力量随微心暖人。您的每一次支持都是我创作的最大动力 https://gf.bilibili.com/item/detail/1106435120 完结 赠人玫瑰手有余香如果文章内容对你有所帮助请不要吝啬你的点赞评论和关注你的每一次支持都是我不断创作的最大动力。当然如果你发现了文章中存在错误或者有更好的解决方法也欢迎评论私信告诉我哦 好了我是向宇https://xiangyu.blog.csdn.net 一位在小公司默默奋斗的开发者闲暇之余边学习边记录分享站在巨人的肩膀上通过学习前辈们的经验总是会给我很多帮助和启发如果你遇到任何问题也欢迎你评论私信或者加群找我 虽然有些问题我也不一定会但是我会查阅各方资料争取给出最好的建议希望可以帮助更多想学编程的人共勉~
http://www.dnsts.com.cn/news/168298.html

相关文章:

  • 教做面点的网站福建做网站
  • 用nat123做自己的网站做网站横幅技巧
  • 沧州市网站建设公司网站页面权重
  • 广州澄网站建设公司建设银行软件官方网站下载
  • 信阳建设企业网站网站设计标题
  • 互联网站产品开发的流程wordpress缩略图默认尺寸怎么修改
  • 辽宁省网站制作wordpress meta 排序
  • 西安网站维护推广南京做网站制作公司
  • 惠州网站建设公司qq推广设置中心
  • 写资料的网站有哪些福田庆三双眼皮修复案例
  • 爱尚网站建设手机搞笑网站模板下载安装
  • 电商网页设计用什么软件海口网站优化
  • 利用淘宝联盟做网站赚取佣金苏州乡村旅游网站建设策划书.doc
  • 廊坊建站线上营销平台有哪些
  • 做内贸只要有什么网络推广网站开网站 主机 服务器
  • 做部队网站技术淘宝客是以下哪个网站的会员简称
  • 体育php网站源码做网站外链需要多少钱
  • 基于百度地图的网站开发网页版淘宝网登录入口
  • 如何有效的进行网站策划怎么给公司建网站
  • 做笔记的网站源码数据库电影网站源码
  • 广西建设厅考试网站软文营销广告案例
  • 自己怎么做网站赚钱吗天津黑曼巴网站建设
  • 给网站定位带后台的网站模板下载
  • 百度投诉电话24小时seo一个月工资一般多少
  • 百度蜘蛛对视频网站的抓取常州做网站找哪家好
  • 建设网站模版顶针 东莞网站建设
  • 网站开发实现页面的跳转网络科技公司属于什么行业类别
  • 济南制作网站的公司wordpress文章播放器
  • 快速提高网站关键词排名优化手机网站吧
  • 陈村网站设计wordpress主题html