Вопрос может и тупой, но я почему-то ни у кого не видел такой проблемы. Короче у меня персонаж не прыгает, а перемещается на какую-то координату по у, я делал прыжок разными способами через адфорс и через велосити, но всегда один и тот же результат. Кто-нибудь знает как это исправить? Надеюсь не у меня одного такая проблема:)
у меня прыгает нормально
Код свой покажи. Скрины из редактора и видео неправильного прыжка тоже не помешают.
Я хз как, но всё решилось само, я чтобы скинуть скрин написал заново скрипт и всё заработало. типо я написал
if (Input.GetKeyDown(KeyCode.Space))
{
_rigidbody.AddForce(Vector2.up * _jumpforse);
}
я тоже самое писал тысячу раз и нечего не работало, я даже переустанавливал юнити из-за этого.
А нет проблема не ушла, но я понял, что проблема была не в неправильном написании прыжка, короче если я двигаю персонажа так
void walk()
{
move.x = Input.GetAxis("Horizontal");
_rigidbody.velocity = new Vector2(move.x * speed, move.y);
}
то прыжок получается резкий типо перемещается, а потом падает, но если я его двигаю так
void walk()
{
transform.position += new Vector3(speed, 0, 0) * Input.GetAxis("Horizontal");
}
то прыжок получается нормальным
Мне кажется основная проблема тут не в плохо работающем прыжке, а в том, что ты в целом плохо понимаешь, что делаешь.
Поищи в интернете работающие примеры реализации контроллера:
unity 2d character controller example
Там может и не будет прямо идеальных примеров, но во всяком случае они помогут встать на верный путь.
Есть хороший блог на эту тему
Как прыгать в Unity (с физикой или без нее)
вот пример оттуда
public Rigidbody rb; public float gravityScale = 5; private void FixedUpdate() { rb.AddForce(Physics.gravity * (gravityScale - 1) * rb.mass); }