游戏对象运动的本质是什么?
游戏对象的运动,是由游戏对象空间位置的连续变化所形成的。其中,游戏对象的空间位置由游戏中的坐标系统所决定,包含位置、旋转角度和缩放比例等属性。
请用三种方法以上方法,实现物体的抛物线运动。
抛体运动的特点
- 水平方向:匀速直线运动
- 竖直方向:自由落体运动(匀变速直线运动)
方法1:修改 transform 属性
1 | public float HorizontalSpeed = 1.0f; // 水平初速度 |
方法2:使用 transform.Translate 方法
1 | public float HorizontalSpeed = 1.0f; // 水平初速度 |
方法3:使用 Vector3.MoveTowards 方法
1 | public float HorizontalSpeed = 1.0f; // 水平初速度 |
方法4:添加 Rigidbody 组件
添加 Rigidbody 组件后,勾选 Use Gravity 属性,游戏对象便能受到重力作用。此时额外增加一个水平速度,即可实现游戏对象的平抛运动。
1 | public float speed = 1.0f; |
写一个程序,实现一个完整的太阳系, 其他星球围绕太阳的转速必须不一样,且不在一个法平面上。
游戏对象的层次结构

八大行星围绕太阳公转,因此应该设计为太阳的子对象。而月球的轨迹只与地球公转相关,与地球自转无关,因此不能将月球直接设为地球的子对象。解决办法是,新建一个空对象 EarthShadow,使它的位置与地球保持一致,再将月球设为 EarthShadow 的子对象,通过控制 EarthShadow 的自转速度来控制月球绕地球的公转速度。
游戏对象初始位置的确定
创建 RoundSun 脚本,新建不同游戏对象的 Transform 属性,并根据八大行星位置的相对关系,在 Start 函数中给 Transform 属性赋值。
1 | public class RoundSun : MonoBehaviour { |
公转和自转
接下来,在 Update 函数中用 RotateAround 方法实现行星的公转,用 Rotate 实现行星的自转。根据太阳系相关数据设定参数。
1 | public class RoundSun : MonoBehaviour { |
效果
最后,将脚本挂在 MainCamera 上,将游戏对象拖入到相应的 Transform 属性中,并将图片素材拖放到行星上。运行效果如下: