一、项目回顾在上篇文章中已经完成了场景搭建主要包括一个平面Plane四个cube组成的围挡并对摄像机的位置进行了设置保证能够在游戏视图中完整显示场景。具体可自行查阅场景搭建本篇将继续创建游戏物体包括多个cube并通过脚本实现游戏物体的旋转。二、创建游戏物体1.创建Cube对象并设置其位置、大小、材质、摆放角度。位置设置位置坐标为(0,0,0)观察其位置会发现有一半隐藏在平面Plane之下此时需要调整Y轴方向使其处于平面Plane之上可以设置(0,0.5,0)。大小创建cube后如果觉得大小不合适可进一步调整Transform组件里的缩放属性默认是(1,1,1)保持原样。小于1表示缩小大于1表示放大可以只在某个方向上进行缩放。材质与Plane一样也可以为游戏物体创建材质设置其颜色。在Assets文件夹中找到Materials文件夹右键选择“创建”-“材质”将其命名为“游戏物体材质”。随后在右侧的检查器面板中设置其反射率属性。最后将该材质拖拽或分配给Cube即可在场景视图中看到效果。摆放角度摆放角度可以通过物体的旋转属性设置分别设置每一个轴的旋转角度。这里设置(-35045)。如果发现旋转之后部分进入Plane以下可继续调整物体位置可以尝试(0,0.8,0)。2.依次复制多个摆放在不同位置。复制多个分别放置不同位置同样的可以新建一个空对象使所有的cube成为其子对象方便管理。设置游戏物体旋转角度时需要确定旋转的轴或者中心点这需要格外说明Unity提供的中心(center)和轴心(pivot)。轴心(pivot)模型的轴心建立模型时候确定可以在建模软件中更改物体自身平移旋转时候围绕Pivot进行平移旋转的中心(center)unity计算mesh的中心得到的中心位置可以计算一个物体也可以计算多个物体打得的中心。选中多个物体则围绕整体center进行旋转。如选中多个物体同时旋转使用的就是中心(center)。三、游戏物体旋转1.新建脚本RotateControl.cs依次Assets文件夹新建子文件夹Scripts在其中新建脚本RotateControl.cs并打开。2.物体旋转编程控制想要物体旋转Unity提供了RotateAround(Vector3 point, Vector3 axis, float angle)方法其实现的功能是使物体围绕穿过point点的axis轴旋转angle角度。如果放置在Update函数中则表示每一次刷新都会执行此功能。using System.Collections; using System.Collections.Generic; using UnityEngine; public class RotateControl : MonoBehaviour { public float speed; //设置旋转的速度在Unity中初始化 void Start() { } // Update is called once per frame void Update() { //调用RotateAround()函数参数分别为物体的位置坐标Y轴旋转的速度 transform.RotateAround(transform.position, Vector3.up, Time.deltaTime * speed); } }Time.deltaTime含义 官方手册中说明这个变量是按秒为单位完成上一帧所用的时间。 在设置旋转或移动速度的时候乘以此值为为了保证不同刷新率下游戏物体1秒变化的程度是一致的。 比如60Hz的话1秒刷60帧也就是Update运行了60次那么deltaTime1/60那么物体1秒旋转的角度为1/60*speed*60speed; 同理0Hz的话1秒刷60帧也就是Update运行了60次那么deltaTime1/60那么物体1秒旋转的角度为1/60*speed*60speed;3.放置脚本并设置speed初始值4.保存并运行程序查看效果如果效果不明显可以设置speed更大的值比如100。
Unity 滚动球游戏(二)
一、项目回顾在上篇文章中已经完成了场景搭建主要包括一个平面Plane四个cube组成的围挡并对摄像机的位置进行了设置保证能够在游戏视图中完整显示场景。具体可自行查阅场景搭建本篇将继续创建游戏物体包括多个cube并通过脚本实现游戏物体的旋转。二、创建游戏物体1.创建Cube对象并设置其位置、大小、材质、摆放角度。位置设置位置坐标为(0,0,0)观察其位置会发现有一半隐藏在平面Plane之下此时需要调整Y轴方向使其处于平面Plane之上可以设置(0,0.5,0)。大小创建cube后如果觉得大小不合适可进一步调整Transform组件里的缩放属性默认是(1,1,1)保持原样。小于1表示缩小大于1表示放大可以只在某个方向上进行缩放。材质与Plane一样也可以为游戏物体创建材质设置其颜色。在Assets文件夹中找到Materials文件夹右键选择“创建”-“材质”将其命名为“游戏物体材质”。随后在右侧的检查器面板中设置其反射率属性。最后将该材质拖拽或分配给Cube即可在场景视图中看到效果。摆放角度摆放角度可以通过物体的旋转属性设置分别设置每一个轴的旋转角度。这里设置(-35045)。如果发现旋转之后部分进入Plane以下可继续调整物体位置可以尝试(0,0.8,0)。2.依次复制多个摆放在不同位置。复制多个分别放置不同位置同样的可以新建一个空对象使所有的cube成为其子对象方便管理。设置游戏物体旋转角度时需要确定旋转的轴或者中心点这需要格外说明Unity提供的中心(center)和轴心(pivot)。轴心(pivot)模型的轴心建立模型时候确定可以在建模软件中更改物体自身平移旋转时候围绕Pivot进行平移旋转的中心(center)unity计算mesh的中心得到的中心位置可以计算一个物体也可以计算多个物体打得的中心。选中多个物体则围绕整体center进行旋转。如选中多个物体同时旋转使用的就是中心(center)。三、游戏物体旋转1.新建脚本RotateControl.cs依次Assets文件夹新建子文件夹Scripts在其中新建脚本RotateControl.cs并打开。2.物体旋转编程控制想要物体旋转Unity提供了RotateAround(Vector3 point, Vector3 axis, float angle)方法其实现的功能是使物体围绕穿过point点的axis轴旋转angle角度。如果放置在Update函数中则表示每一次刷新都会执行此功能。using System.Collections; using System.Collections.Generic; using UnityEngine; public class RotateControl : MonoBehaviour { public float speed; //设置旋转的速度在Unity中初始化 void Start() { } // Update is called once per frame void Update() { //调用RotateAround()函数参数分别为物体的位置坐标Y轴旋转的速度 transform.RotateAround(transform.position, Vector3.up, Time.deltaTime * speed); } }Time.deltaTime含义 官方手册中说明这个变量是按秒为单位完成上一帧所用的时间。 在设置旋转或移动速度的时候乘以此值为为了保证不同刷新率下游戏物体1秒变化的程度是一致的。 比如60Hz的话1秒刷60帧也就是Update运行了60次那么deltaTime1/60那么物体1秒旋转的角度为1/60*speed*60speed; 同理0Hz的话1秒刷60帧也就是Update运行了60次那么deltaTime1/60那么物体1秒旋转的角度为1/60*speed*60speed;3.放置脚本并设置speed初始值4.保存并运行程序查看效果如果效果不明显可以设置speed更大的值比如100。