Я работаю над очень простым тестом в Unity 2D. Проблема, с которой я столкнулась, - это когда мой спрайт сталкивается с землей, он постоянно проверяет событие, слишком часто, поэтому спрайт остается в подвешенном состоянии. У него нет возможности покинуть землю, поскольку к тому моменту, когда он проверяет, он поворачивается, в результате чего он быстро поднимается и опускается. Как показано в клипе ниже:Interpolate object collision stuck
https://m.youtube.com/watch?v=gPmmLjGe9iQ
То, что я хочу, когда контакт сделан спрайт должен изменить это направление оси Y. См. Мой код ниже.
void Update() {
hitWall = Physics2D.OverlapCircle(wallCheckUp.position, wallCheckRadius, whatIsWall);
if (hitWall)
{
moveUp = !moveUp;
}
if (moveUp)
{
transform.localScale = new Vector3(-1f, 1f, 1f);
GetComponent<Rigidbody2D>().velocity = new Vector2(speed, GetComponent<Rigidbody2D>().velocity.x);
}
else
{
transform.localScale = new Vector3(1f, 1f, 1f);
GetComponent<Rigidbody2D>().velocity = new Vector2(-speed, GetComponent<Rigidbody2D>().velocity.x);
}
}
Если вам нужна дополнительная информация, пожалуйста, дайте мне знать.
EDIT
Чтобы сделать то, что я ясно вижу, пожалуйста, мои настройки спрайтов.
Неудивительно, что вы совершенно неправильно используете «Жесткое тело» (установка «скорость» вручную), проверьте документы о том, как правильно его использовать. – Aybe
Сделаю, я все еще учусь. Я получил основу этого из онлайн-учебника, но это было для левого и правого движения, и я изменил его, чтобы попробовать и получить то, что мне нужно. – Phil3992
В основном вы должны использовать только методы 'Add * (Vector3)' 'Rigidbody', назначьте« PhysicalMaterial »с нужной букетом, а затем настройте это на свои нужды. – Aybe