Я создаю простую мини-игру в единстве как отдельную сцену. Проблема в том, что гравитация на моем жестком теле работает совершенно нормально, когда я начинаю со сцены мини-игры, но когда я перехожу на сцену мини-игры из другой, гравитация перестает работать, и мой игрок может только go.
Вот что я пробовал:
- Настройки 2D физики моего проекта в порядке (Гравитация: X = 0, Y = -9,81)
- Настройка времени моего проекта все в порядке (Шкала времени: 1)
- Персонаж My Player имеет Rigidbody2D, который имеет значение Dynami c, Имитация (true), Масштаб гравитации = 5, ТОЛЬКО вращение заморожено, и он никогда не спит.
- Игрок также имеет коллайдер бокса и круга (оба 2D).
- Все входы игрока читаются в Update (), а вся физика выполняется в FixedUpdate () (я использую скорость для переместить игрока).
У меня есть объект GameController, который переносится между сценами, но ни один из его сценариев не должен влиять на сцену (я могу предоставить части сценариев OnLevelWasLoaded () или любые другие другие части). * 101 7 *
Вот код в контроллере моего игрока:
void Start()
{
rb = GetComponent<Rigidbody2D>();
box = GetComponent<BoxCollider2D>();
_renderer = GetComponent<SpriteRenderer>();
velVer = 30f;
velHor = 10f;
}
void Update()
{
moveHor = Input.GetAxisRaw("Horizontal");
moveVer = Input.GetAxis("Vertical");
buttonUp = Input.GetButtonUp("Vertical");
_moveVector = new Vector2(moveHor, moveVer);
}
void FixedUpdate()
{
if (IsGrounded() && buttonUp)
rb.velocity = new Vector2(velHor * _moveVector.x, velVer * _moveVector.y);
if (_moveVector.x != 0 && _moveVector.y == 0)
rb.velocity = new Vector2(velHor * _moveVector.x, rb.velocity.y);
}
private bool IsGrounded()
{
RaycastHit2D raycast = Physics2D.BoxCast(box.bounds.center, box.bounds.size, 0f, Vector2.down, 0.1f, layer);
return raycast.collider != null;
}
private void OnTriggerEnter2D(Collider2D other)
{
if (other.tag.Equals("Heart"))
{
other.gameObject.SetActive(false);
}
}
Я прокомментировал любые ссылки на объект GameController из всех сценариев на мини-игровой сцене, поэтому GameController не должен иметь никаких удар по контроллеру мини-игровых персонажей.
Я в отчаянии, я искал в Интернете более 3 часов и не нашел ничего, что могло бы мне помочь (если я действительно пропустил решение, мои извинения). Я могу предоставить любую дополнительную информацию, которая может вам потребоваться.
РЕДАКТИРОВАТЬ: Здесь приведены изображения поведения персонажей, когда я начинаю игру со сцены мини-игры и когда я перехожу на сцену мини-игры из другой.
Работает (запускает мини-игру напрямую):
![enter image description here](https://i.stack.imgur.com/0A7f4.gif)
Не работает (перемещено в мини-игру из другой сцены):
![enter image description here](https://i.stack.imgur.com/3plEk.gif)