2015-10-04 3 views
0

Я пытаюсь переместить плеер с помощью rigidbody.velocity:Rigidbody Velocity портя Физик ЕДИНСТВО

rigidbod.velocity = new Vector2 (Input.GetAxis ("Horizontal") * maxSpeed, rigidbod.velocity.y); 

проблема, это ухудшит мой код взрыва. Предполагается, что персонаж должен быть отброшен назад, когда приближается взрыв. Я знаю, почему это происходит; если игрок по-прежнему, скорость X твердого тела будет возвращена как 0, то есть любые внешние силы, толкающие игрока вдоль оси X, будут противодействовать этому. Поэтому, когда я добавляю взрыв, игрок уходит на новое место в нескольких единицах. Это выглядит очень неестественно и рывком, так как его нужно отбросить назад, но его код говорит ему, чтобы он был неподвижным, если не нажата клавиша. Я отправляю это, чтобы узнать, есть ли способ переписать этот код, чтобы он мог перемещать игрока, когда он был правильно настроен извне. Я слышал, что AddForce работает, но когда я его использовал, скорость моего игрока постоянно увеличивалась. Он увядает слишком быстро или слишком медленно. Любые идеи о том, как я могу заставить это работать? Я попытался добавить rigidbody.velocity.x после того, как он говорит «maxspeed», надеясь, что он позволит вводить внешние силы, и он работает, но он испортил код движения, заставив его идти слишком быстро. Кажется, я не могу заставить оба взрыва и код движения работать правильно в одно и то же время. Любая помощь будет принята с благодарностью. Благодарю.

ответ

0

и именно поэтому в Unity документы они явно государства:

В большинстве случаев вы не должны изменять скорость напрямую, так как это может результат в нереальные поведения.

вместо изменения скорости непосредственно, вы должны использовать в AddForce(..)

Vector2 force = new Vector2 (Input.GetAxis ("Horizontal") * maxSpeed, 0f); 
rigidbody.AddForce(force); 

//or if in update: 
rigidbody.AddForce(force * Time.deltaTime); 
+0

Thats, почему именно вы должны включить '* Time.deltaTime' в' AddForce (...) 'в любое время вы смешиваете их по нескольким кадрам, как я сказал – maksymiuk

+0

Я не уверен, если вы получите то, что я говорю. Я сделал это в том, что написал. Проблема с AddForce заключается в том, что скорость моего игрока будет постоянно увеличиваться. Игрок не достигает максимальной скорости. Таким образом, игрок сходит с ума, если придерживается одного направления. Я сказал, что в том, что я написал. Я очень ценю, что вы пытаетесь помочь, но на самом деле это не то, что я ищу. Спасибо, в любом случае! @LOLslowSTir –

+0

Вы можете использовать скорость в состоянии. 'if (velocity.x Kamalen

Смежные вопросы