简答题
1.游戏对象运动的本质是什么?
- 游戏对象在场景中坐标的变换
2.请用三种方法以上方法,实现物体的抛物线运动。
- 利用transform实现
1 | public class test : MonoBehaviour { |
- 利用translate实现
1 | void Update() { |
- 利用Vector实现
1 | void Update() { |
3.写一个程序,实现一个完整的太阳系, 其他星球围绕太阳的转速必须不一样,且不在一个法平面上。
- 首先建立一个太阳系的模型,将八大行星作为太阳的子对象,然后确定好球体的大小和位置
1 | this.transform.RotateAround(origin.position, axis , speed * Time.deltaTime); |
- 利用上面的transform.RatateAround函数,我们只需要设置origin的位置为太阳所在的位置,axis为Vector3.up,并且自己定义速度。再把它挂载在每一个行星上面,就可以实现行星绕太阳的公转。
- 但是这是我们发现所有行星的公转平面都在同一个法平面上,根据作业要求,我们需要改变行星绕太阳的轨道平面。这时就需要将Vector3.up改变为其他不同方向的轴。
- 其中最简单的方法为:为每一个行星创建一个cs文件,然后将其中的axis设置为不同的值即可。
- 但是这样太过于繁琐,会有很多重复性的工作,参考老师所给的案例我们可以设置两个随机变量y和z,之后生成一个(0,y,z)的向量作为轴变量axis的值。这样我们就可以对于所有的行星使用同一个cs文件
1 | public Transform origin; |
- 利用上面的代码,我们就实现了行星在不同法平面围绕太阳公转,效果如图
- 下一步我们可以用同样的方法为为地球添加一个子对象月球,设置它绕着地球公转。最后我们利用Rotate函数为太阳添加自转效果就实现了一个简易的太阳系
- 为了实现星空的效果,我在场景中添加了一个平台,之后利用摄像机找到合适的角度,就可以很low的模拟一下太阳系在星空中的感觉啦!