你的公式是正确的。
heightVector
是球的最大高度。例如,如果
(0,10)
,那么就意味着你的球会飞到10米高。
这个
time
speed
是你的球的速度。
但是,我建议速度乘以
Time.deltaTime
使反弹帧速率独立。
高度向量
和
没有复杂性。只需创建两个公共字段,就可以了!
class Bouncer : MonoBehaviour
{
public float Speed = 10;
public Vector2 HeightVector = new Vector2(0,10);
}
float
变量。那你需要加上
在每一天
Update
class Bouncer : MonoBehaviour
{
public float Speed = 10;
public Vector2 HeightVector = new Vector2(0,10);
float timer;
void Update()
{
timer += Time.deltaTime;
}
}
恭喜!你现在有计时器了!
现在你真的快结束了。您只需计算球的当前位置并将其应用于其变换。
class Bouncer : MonoBehaviour
{
public float Speed = 10;
public Vector3 HeightVector = new Vector3(0,10);
float timer;
void Update()
{
timer += Time.deltaTime;
Vector3 currentPosition = HeightVector * Mathf.Abs(timer * Speed * Time.deltaTime);
transform.position = currentPosition;
}
}
编辑:
class Bouncer : MonoBehaviour
{
public float Speed = 10;
public Vector3 HeightVector = new Vector3(0,10);
Vector3 originalPosition;
float timer;
void Start()
{
originalPosition = transform.position;
}
void Update()
{
timer += Time.deltaTime;
Vector3 currentPosition = HeightVector * Mathf.Abs(timer * Speed * Time.deltaTime);
transform.position = originalPosition + currentPosition;
}
}