Нет useGravity
в RigidBody2D
, но вы можете просто оставить IsKinematic
отключенным, а также отключить его gravityScale
private void Start()
{
rbBall.gravityScale = 0;
}
, это имеет тот же эффекткак отключение useGravity
на RigidBody
.Особенно в контексте вашего вопроса мне очень нравится примечание:
может быть проще реализовать летающего персонажа, отключив его гравитацию, чем симулируя силы, которые удерживают его в воздухе.
;)
или альтернативно отключить гравитацию для всей сцены / проекта, используя Physics2D.gravity
private void Start()
{
Physics2D.gravity = Vector2.zero;
}
К вопросусамо по себе
Есть ли альтернатива для addforce, если я хочу использовать кинематическую?
Нет и да ...
С RigidBody2D.isKinematic
Если это твердое тело будет выведено из-под контроля физики?
Если это свойство установлено в значение true, то твердое тело перестанет реагировать на столкновения и приложенные силы.Это может быть полезно, когда объектом обычно нужно управлять "кинематически" (то есть, не физически), но тогда иногда требуется физика для реализма.Например, человеческий характер обычно не реализуется с помощью физики, но иногда может быть выброшен в воздух и сталкиваться с объектами в результате удара или взрыва.
Или также из Rigidbody.isKinematic
Если включено isKinematic
, силы, столкновения или соединения больше не будут влиять на твердое тело.Твердое тело будет полностью контролироваться анимацией или скриптом, если изменить transform.position
.
Так что просто используйте
transform.position = ...
как обычно.
Для получения чего-то похожего на AddForce
вы можете сохранить локальный вектор скорости идобавьте больше скорости, например
// public so you can also configure
// it in the inspector or set it from another script
public Vector2 speed;
public void AddForce(Vector2 force)
{
speed += force;
}
private void Update()
{
transform.position += speed * Time.deltaTime;
}
Однако в вашем случае вы не хотите добавлять скорость каждому кадру, а, вероятно, устанавливаете определенную скорость только один раз при запуске и при столкновениях.