文章目录
1.简答并用程序验证
游戏对象运动的本质是什么
游戏对象的空间属性在同一个坐标系下随每一帧的变化。这里的空间属性是指transform中的position和rotation属性,即位置参数和旋转参数,运动可以看成是这些数值的改变。
请用三种方法以上方法,实现物体的抛物线运动。(如,修改Transform属性,使用向量Vector3的方法…)
- 分别在两个方向上改变transform中的position属性
计算出x方向和y方向的位移改变量,然后position在两个方向上分别加上改变量即可
public float v_x0 = 1.0f;
public float v_y0 = 0.5f;
public float t = 0f;
void Update () {
Debug.Log("Update");
t += (float)Time.deltaTime;
float delta_x = (float)(v_x0 * t);
float delta_y = (float)(v_y0 * t - 0.5 * 2 * t * t);
this.transform.position += Vector3.left * delta_x;
this.transform.position += Vector3.up * delta_y;
}
- 直接使用一个Vector3改变position
public float v_x0 = 1.0f;
public float v_y0 = 0.5f;
public float t = 0f;
// Update is called once per frame
void Update () {
Debug.Log("Update");
t += (float)Time.deltaTime;
float delta_x = (float)(v_x0 * t);
float delta_y = (float)(v_y0 * t - 0.5 * 2 * t * t);
//上面部分相同
this.transform.position += new Vector3(delta_x, delta_y, 0);
}
- 使用translate函数
1、2中的方法是直接让position加上改变量的Vector3;这里的方法是将这个改变量的Vector3作为参数传入Translate函数中
public float v_x0 = 1.0f;
public float v_y0 = 0.5f;
public float t = 0f;
// Update is called once per frame
void Update () {
Debug.Log("Update");
t += (float)Time.deltaTime;
float delta_x = (float)(v_x0 * t);
float delta_y = (float)(v_y0 * t - 0.5 * 2 * t * t)