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

黄江东莞网站建设装潢设计多少钱

黄江东莞网站建设,装潢设计多少钱,网站代码如何做优化,wordpress 边栏本章节我们创建一个“RoleDemoProject”工程#xff0c;然后导入我们之前创建地形章节中的“TerrainDemo.unitypackage”资源包#xff0c;这个场景很大#xff0c;大家需要调整场景视角才能看清。 接下来#xff0c;我们添加一个人物模型#xff0c;操作方式就是将模型文…本章节我们创建一个“RoleDemoProject”工程然后导入我们之前创建地形章节中的“TerrainDemo.unitypackage”资源包这个场景很大大家需要调整场景视角才能看清。 接下来我们添加一个人物模型操作方式就是将模型文件目录复制到“Assets”下 然后Unity会自动同步该文件我们查看Project面板 在“Alita”目录下有两个文件“Alita.fbx”和“alita_d.png”。前者是模型文件后者是贴图文件。我们接下来要做的就是将“Alita.fbx”模型文件拖拽到场景中。由于我们的场景太大了可能无法方便的看到模型。我们这样操作我们可以在Hierarchy层次面板中找到这个游戏对象“Alita”然后我们将鼠标“移动到不要点击”到场景视图中然后按下“F”键就可以在场景视图中显示这个游戏对象了。 当然我们最好再调整一下这个模型然其站立到地面上。在移动模型的时候注意保持模型轴心和本地坐标系的选择。如下所示 当我们切换轴心之后我们发现模型身上的坐标系指示箭头移动到了模型脚底。一般情况下人物模型的轴心就是在脚底本地坐标系的原点。如果我们是“Center”状态的话坐标系指示箭头会在模型的中心位置。 我们能够看到模型的下半部分位于地形的下面我们向上移动一下。 接下来我们要做的是让相机跟随模型一起移动和旋转。如果使用代码来完成的话其原理就是模型如何移动和旋转就同步调整相机如何移动和旋转。这里介绍一种更加简单的方式就是将相机设置为模型的子游戏对象。操作非常简单就是在Hierarchy层次面板中拖动“Main Camera”到“Alita”上面即可。 拖拽后的样子 这样做的目的就是“Alita”移动旋转的时候子对象“Main Camera”自动移动旋转。当然我们还需要进一步调整相机的位置让其放置到“Alita”的后上方。首先我们将相机的Position和Rotation数值清零如下所示 请注意此时的相机位于模型的脚下。在Unity中子游戏对象的移动和旋转都是相对于父对象而言的。我们将相机的Position数值清零并不是将相机放置到世界坐标系的原点而是放置到了父对象“Alita”的原点。接下来我们调整相机的位置 我们将相机放置到人物模型的后上方类似于第三人称视角。 接下来我们保持相机选中状态我们点击菜单栏“GameObject”-“Align View to Selected” 在之前的移动和旋转案例中我们忽略了一个重要的特性时间Time.deltaTime。游戏对象的移动有三个因素决定一个方向一个是速度另一就是时间。其中方向和速度可以由向量表示向量的长度代表速度方向还是方向而时间就是Time.deltaTime。为什么时间是Time.deltaTime呢因为游戏对象是在每一次update方法调用的时候才会进行移动而两次移动之间的时间就是两个update方法调用的时间差也就是我们的Time.deltaTime值。因此Translate方法里面第一个参数应该是方向*速度*时间。 接下来我们来控制角色的前后左右移动。我们创建一个“RoleController.cs”脚本文件并且附加到“Alita”上面。我们目前使用WASD键来控制角色前后左右移动代码如下 using System.Collections; using System.Collections.Generic; using UnityEngine;public class RoleController : MonoBehaviour {// 移动速度private float moveSpeed 10.0f;// Update is called once per framevoid Update(){// 向前移动if (Input.GetKeyDown(KeyCode.W)){transform.Translate(Vector3.forward * moveSpeed * Time.deltaTime, Space.Self);}// 向后移动if (Input.GetKeyDown(KeyCode.S)){transform.Translate(Vector3.back * moveSpeed * Time.deltaTime, Space.Self);}// 向左移动if (Input.GetKeyDown(KeyCode.A)){transform.Translate(Vector3.left * moveSpeed * Time.deltaTime, Space.Self);}// 向右移动if (Input.GetKeyDown(KeyCode.D)){transform.Translate(Vector3.right * moveSpeed * Time.deltaTime, Space.Self);}} }这里我们使用的是本地坐标系进行移动大部分游戏开发中也都是这么做的。 接下来我们Play当前工程查看运行后的Gif图 由于我们使用的是GetKeyDown方法因此每按下一次键盘才会移动一段距离。如果我们需要长按键盘进行移动的话可以换成GetKey方法。当我们移动过程中发现一个小问题就是我们没有考虑地形的高度。也就是说模型在移动过程中可能会移动到地形之下或者地形之上。我们后续在解决这个问题。接下来我们添加旋转的代码如下所示。 using System.Collections; using System.Collections.Generic; using UnityEngine;public class RoleController : MonoBehaviour {// 旋转速度private float rotationSpeed 20.0f;// Update is called once per framevoid Update(){// 向左旋转if (Input.GetKeyDown(KeyCode.Q)){transform.Rotate(Vector3.down * rotationSpeed * Time.deltaTime, Space.Self);}// 向右旋转if (Input.GetKeyDown(KeyCode.E)){transform.Rotate(Vector3.up * rotationSpeed * Time.deltaTime, Space.Self);}} }上面我们忽略了移动的代码。为什么左右旋转使用的是Vector3.up和Vector3.down呢不应该是Vector3.left和Vector3.right吗很简单我们所谓的左右旋转类似于“左右扭头”它实际上就是围绕Y轴进行旋转的所以是Vector3.up和Vector3.down上下方向的Y轴。接下来我们Play当前工程查看运行Gif效果图 接下来我们来解决地形高度问题。我们需要借助一个“角色控制器”的组件。我们选中“Alita”然后在Inspector检视面板中点击“Add Component”按钮。 在弹出的搜索框中输入“ch”然后在下拉框中选中“Character Controller”角色控制器组件。 此时在场景中的“Alita”会覆盖一个胶囊体的线框。 这个胶囊体的线框是用来做“碰撞检测”的因此它最好能够“包裹”住我们的人物模型。当然默认情况下它基本上就能够自动“包裹”我们的人物模型。但是有一个非常重要的注意点就是胶囊体的线框不能“陷入”到地形的下面。因此我们需要编辑胶囊体的线框它的参数调节我们直接给出大家可以自己修改其中某些值查看效果 接下来我们还需要修改角色移动代码如下 using System.Collections; using System.Collections.Generic; using UnityEngine;public class RoleController : MonoBehaviour {// 移动速度private float moveSpeed 10.0f;// 旋转速度private float rotationSpeed 100.0f;// 角色控制器组件private CharacterController cc;// Start is called before the first frame updatevoid Start(){// 获取角色控制器组件cc GetComponentCharacterController();}// Update is called once per framevoid Update(){// 前后左右方向float v Input.GetAxis(Vertical);float h Input.GetAxis(Horizontal);Vector3 direction new Vector3(h, 0, v);// 前后左右移动cc.SimpleMove(transform.TransformDirection(direction) * moveSpeed);// 向前移动if (Input.GetKeyDown(KeyCode.W)){//transform.Translate(Vector3.forward * moveSpeed * Time.deltaTime, Space.Self);}// 向后移动if (Input.GetKeyDown(KeyCode.S)){//transform.Translate(Vector3.back * moveSpeed * Time.deltaTime, Space.Self);}// 向左移动if (Input.GetKeyDown(KeyCode.A)){//transform.Translate(Vector3.left * moveSpeed * Time.deltaTime, Space.Self);}// 向右移动if (Input.GetKeyDown(KeyCode.D)){//transform.Translate(Vector3.right * moveSpeed * Time.deltaTime, Space.Self);}// 向左旋转替换GetKey方法if (Input.GetKey(KeyCode.Q)){transform.Rotate(Vector3.down * rotationSpeed * Time.deltaTime, Space.Self);}// 向右旋转替换GetKey方法if (Input.GetKey(KeyCode.E)){transform.Rotate(Vector3.up * rotationSpeed * Time.deltaTime, Space.Self);}} }上面获取键盘输入的代码是Input.GetAxis(Vertical/Horizontal) 这个代码兼容WASD键的输入获取。然后使用CharacterController组件的SimpleMove方法进行移动。我们就不过多解释上面的代码了直接Play运行查看Gif效果图吧。
http://www.hkea.cn/news/14439030/

相关文章:

  • 石家庄做手机网站建设北京网站备案速度
  • 大型网站建设费用中国建设部官方网站绿色建筑
  • 广东省建设注册执业资格中心网站自助建站信息发布网企业
  • 自学网站查分数第一接单网app地推和拉新
  • 网站开发学历要求度假村网站模板
  • 如何看网站做没做推广石家庄企业网站
  • 昌平网站设计wordpress攻击教程
  • 天津滨海新区网站建设个人网站怎么做cps
  • 网站开发方案目录河北建设招标网
  • 国家建设 免费论文期刊网站软件开发模型有哪些
  • 做网站的公司为什么人少了青岛标志设计公司
  • 网站的优势是什么网站建设专业
  • dw网站的站点建设用pdf怎么做电子书下载网站
  • phpcms多个网站网站悬浮
  • 专业生产车间设计图纸网站利用小说网站做本站优化
  • 做网站公司的商标需要注册吗微信app网站建设
  • 手机网站 文件上传免费设计logo标志
  • 即墨网站建设在哪建设工程交易中心是什么
  • 吕梁网站建设公司wordpress ajax post
  • 学做课件的网站wordpress 默认相册
  • 做网站一般分几种百度对网站建设公司
  • 设计类网站策划案网站建设项目介绍
  • 顺德人才市场招聘信息天津seo关键词排名优化
  • 传媒公司 网站开发深圳网站系统哪家强
  • 吉 360 网站建设wordpress存档
  • wordpress数据库和网站文件下载中小企业网站建设需要注意什么
  • diy建站系统wordpress tag name slug or id
  • 医院行业网站如何在百度上做自己的网站
  • 南昌县住房和城乡建设局网站如何做网站内容管理
  • 搭建一个网站教程产品营销软文