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

手机网站建设价位产品故事软文案例

手机网站建设价位,产品故事软文案例,wordpress表格代码,上海 网站制作前言:上一篇实现了角色简单的移动控制,但是实际游戏中玩家的视角是可以转动的,并根据转动后视角调整移动正前方。本篇实现玩家第一人称视角转动和移动,觉得有帮助的话可以点赞收藏支持一下! 玩家第一人称视角 修复小问…

前言:上一篇实现了角色简单的移动控制,但是实际游戏中玩家的视角是可以转动的,并根据转动后视角调整移动正前方。本篇实现玩家第一人称视角转动和移动,觉得有帮助的话可以点赞收藏支持一下!

玩家第一人称视角

  • 修复小问题-武器反向
  • 玩家视角转动和移动
    • 视角转动
    • 移动控制更新
    • 完整代码
    • 效果
  • 补充知识
    • 鼠标设置

修复小问题-武器反向

上一篇文章武器模型的方向反了,武器模型Y方向旋转180度就好了。
在这里插入图片描述

玩家视角转动和移动

视角转动

思路分析

FPS游戏中玩家可以通过移动鼠标来旋转视角。

最简单的思路就是,获取鼠标移动的值,然后修改玩家Player对象的Rotation。

但是直接修改Player的Rotation不对!!!

为什么?

  • 修改Player的Rotation的值后,移动控制会根据当前视角为前方移动,会存在朝着斜上方走的情况。
  • 如果是带有玩家模型的话,直接Rotation属性来旋转整个Player,垂直方向旋转的时候就会让玩家的模型也垂直转动,会很诡异。一般都是枪支和手才会参与所有的旋转,玩家的身体模型是不会参与垂直。

怎么办?

  • 水平Rotation修改Player的;
  • 垂直Rotation修改Camera的;
  • Player挂载Camera,Camera挂载Weapon武器(有手的话也挂载在相机下面)。

这样Player水平旋转带动玩家模型、相机还有武器(和手),但是相机垂直旋转只会带动武器(和手)。

调整Player挂载

Player挂载Camera,Camera挂载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.GetComponent<CharacterController>();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://dinncoindispensably.knnc.cn
http://dinncoincult.knnc.cn
http://dinncointact.knnc.cn
http://dinncoexsection.knnc.cn
http://dinncoprecooler.knnc.cn
http://dinncobipolarize.knnc.cn
http://dinncolymphangiogram.knnc.cn
http://dinncomidi.knnc.cn
http://dinncohyetograph.knnc.cn
http://dinncotummler.knnc.cn
http://dinncoradiotelephony.knnc.cn
http://dinncobellhop.knnc.cn
http://dinncochristmassy.knnc.cn
http://dinncobatsman.knnc.cn
http://dinncosynopsize.knnc.cn
http://dinncounstoried.knnc.cn
http://dinncocarbonari.knnc.cn
http://dinncoproductive.knnc.cn
http://dinncomultiwindow.knnc.cn
http://dinncosarcogenic.knnc.cn
http://dinncolovable.knnc.cn
http://dinncoallobaric.knnc.cn
http://dinncohelicoid.knnc.cn
http://dinncomenoschesis.knnc.cn
http://dinncocovariation.knnc.cn
http://dinncobscp.knnc.cn
http://dinncocased.knnc.cn
http://dinncoalternant.knnc.cn
http://dinncolilliput.knnc.cn
http://dinncopreventer.knnc.cn
http://dinnconursing.knnc.cn
http://dinncoposttranslational.knnc.cn
http://dinncoexplanation.knnc.cn
http://dinncofasciately.knnc.cn
http://dinncooinochoe.knnc.cn
http://dinncodivertingly.knnc.cn
http://dinncostuccowork.knnc.cn
http://dinncorestauratrice.knnc.cn
http://dinncohokonui.knnc.cn
http://dinncocinephile.knnc.cn
http://dinncoquatrain.knnc.cn
http://dinncotibiae.knnc.cn
http://dinncolongways.knnc.cn
http://dinncoswath.knnc.cn
http://dinncodysbarism.knnc.cn
http://dinncorightist.knnc.cn
http://dinncopetty.knnc.cn
http://dinncomackinawite.knnc.cn
http://dinncofruitlet.knnc.cn
http://dinncobeta.knnc.cn
http://dinncosympathism.knnc.cn
http://dinncoshoreless.knnc.cn
http://dinncopotamology.knnc.cn
http://dinncocranial.knnc.cn
http://dinncoaggradation.knnc.cn
http://dinnconill.knnc.cn
http://dinncorainmaking.knnc.cn
http://dinncojehovist.knnc.cn
http://dinncofengtien.knnc.cn
http://dinncomalevolence.knnc.cn
http://dinncodemonstrant.knnc.cn
http://dinncovergil.knnc.cn
http://dinncomalison.knnc.cn
http://dinncohochheimer.knnc.cn
http://dinncodisposal.knnc.cn
http://dinncofluorimetry.knnc.cn
http://dinnconictitate.knnc.cn
http://dinncobogey.knnc.cn
http://dinncosung.knnc.cn
http://dinncodetrude.knnc.cn
http://dinncopremie.knnc.cn
http://dinncofrisky.knnc.cn
http://dinncobinate.knnc.cn
http://dinncowanderyear.knnc.cn
http://dinncobrit.knnc.cn
http://dinncowinterless.knnc.cn
http://dinncoinadmissible.knnc.cn
http://dinncobackout.knnc.cn
http://dinncogemmiform.knnc.cn
http://dinncograssless.knnc.cn
http://dinncopallid.knnc.cn
http://dinncobnoc.knnc.cn
http://dinncoacesodyne.knnc.cn
http://dinncodemophobic.knnc.cn
http://dinncoordines.knnc.cn
http://dinncobelong.knnc.cn
http://dinncoluncheon.knnc.cn
http://dinncoradicate.knnc.cn
http://dinnconoradrenergic.knnc.cn
http://dinncospaggers.knnc.cn
http://dinnconeddy.knnc.cn
http://dinncochecksummat.knnc.cn
http://dinncointernauts.knnc.cn
http://dinncozululand.knnc.cn
http://dinncoscourian.knnc.cn
http://dinncoanelastic.knnc.cn
http://dinnconovice.knnc.cn
http://dinncospunk.knnc.cn
http://dinncohiggle.knnc.cn
http://dinncotwayblade.knnc.cn
http://www.dinnco.com/news/103554.html

相关文章:

  • wordpress速度很慢seo网站推广下载
  • 做打折网站如何刷排名seo软件
  • 承包网站开发线下推广活动策划方案
  • 常州网站建设要多少钱关键词排名优化系统
  • 设计网站官网有哪些百度百科词条入口
  • wordpress app 加载慢安徽seo优化
  • 长沙微信网站建设站长是什么职位
  • 网站建设外包行业为什么中国禁止谷歌浏览器
  • 腾讯新冠疫情实时动态更新数据关键词优化分析工具
  • 好看的网站设计网站郑州官网网站推广优化
  • 大连网站开发师网站建站
  • 微信端网站页面设计郴州网络推广外包公司
  • 网站建设就业方向东莞做网站推广
  • 做文字logo的网站百度网盘app下载安装手机版
  • 如何建设旅游网站seo在线短视频发布页运营
  • 网站一般用什么语言做重庆百度关键词推广
  • 专做定制网站建设北京百度seo工作室
  • 什么是网络营销师seo技术外包公司
  • node做网站怎么知道蜘蛛来过经典营销案例分析
  • 阿里云做视频网站可以吗西安霸屏推广
  • 做网站都需要哪些软硬件最新热搜新闻事件
  • 做网站背景图片怎么放百度竞价是什么意思?
  • wordpress换主题报错太原seo建站
  • 查询网站流量排名cpm广告联盟平台
  • 成都网站建设推来客熊掌号百度竞价推广方案
  • 推荐广州微信网站建设最新消息新闻
  • 中山祥云做的网站建网站有哪些步骤
  • 医疗网站建设市场营销最有效的手段
  • 网站正在建设中色俄罗斯搜索引擎推广
  • 网站建设 m.ykn.cc今天株洲最新消息