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,即可在场景视图中看到效果。
摆放角度:摆放角度可以通过物体的旋转属性设置,分别设置每一个轴的旋转角度。这里设置(-35,0,45)。如果发现旋转之后部分进入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次,那么deltaTime=1/60,那么物体1秒旋转的角度为1/60*speed*60=speed; 同理:0Hz的话,1秒刷60帧,也就是Update运行了60次,那么deltaTime=1/60,那么物体1秒旋转的角度为1/60*speed*60=speed;3.放置脚本并设置speed初始值
4.保存并运行程序查看效果
如果效果不明显,可以设置speed更大的值,比如100。
