Ваш код, как написано, как только он заработает, будет бесконечно ускорять жесткое тело. Вы хотите ограничить скорость на максимальной скорости: http://answers.unity.com/answers/330805/view.html
rigidbody.AddForce(new Vector2(0, 1) * thrust * Time.deltaTime);
if (rigidbody.velocity.magnitude > topSpeed)
rigidbody.velocity = rigidbody.velocity.normalized * topSpeed;
Если вы хотите, чтобы он сразу установил скорость на фиксированное значение, то вы можете просто установить скорость на каждом кадре:
https://docs.unity3d.com/ScriptReference/Rigidbody-velocity.html
void FixedUpdate()
{
if (Input.GetButtonDown("Jump"))
{
// the cube is going to move upwards in 10 units per second
rb2D.velocity = new Vector3(0, 10, 0);
moving = true;
Debug.Log("jump");
}
if (moving)
{
// when the cube has moved over 1 second report it's position
t = t + Time.deltaTime;
if (t > 1.0f)
{
Debug.Log(gameObject.transform.position.y + " : " + t);
t = 0.0f;
}
}
}
Ваш код не показывает это, поэтому, если вы еще этого не делаете, вам нужно убедиться, что rb2D
действительно установлено в Rigidbody2d на объекте, которым вы хотите манипулировать. Например. выполнив в методе запуска:
void Start()
{
rb2D = gameObject.GetComponent<Rigidbody2D>();
}