Четверг, 18 Апреля 2024, 08:36

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » не выполняет код (обрыв кода)
не выполняет код
shustr1k76Дата: Пятница, 11 Марта 2016, 23:11 | Сообщение # 1
почетный гость
Сейчас нет на сайте
привет всем! в обшем делаю рывок, таким способом, работает. потом хочу speedup перевести в false. То тогда рывок не выполняется полностью, а просто прерывается. пробывал в fixedupdate and update. как быть?
Код
if (speedJoy.IsPressed () && speedup) {
   
   rd.AddForce (moveJoy.MoveInput () * 2000 * Time.deltaTime, ForceMode.Impulse);

Код
if (speedJoy.IsPressed () && speedup) {
   
   rd.AddForce (moveJoy.MoveInput () * 2000 * Time.deltaTime, ForceMode.Impulse);
speedup = false;
irinautkinaДата: Пятница, 11 Марта 2016, 23:36 | Сообщение # 2
участник
Сейчас нет на сайте
moveJoy.MoveInput () * 2000 * Time.deltaTime

может я ошибаюсь, но в rd.AddForce - Time.deltaTime ненужна, физический движок работает в FixedUpdate и скорость работы не зависит от частоты кадров, скорость зависит от частоты вызова FixedUpdate, поэтому мне кажется * Time.deltaTime ненужно. Поправьте если я неправа.


Сообщение отредактировал irinautkina - Пятница, 11 Марта 2016, 23:37
shustr1k76Дата: Суббота, 12 Марта 2016, 15:48 | Сообщение # 3
почетный гость
Сейчас нет на сайте
попробывал не помогает((
EgoorДата: Суббота, 12 Марта 2016, 16:04 | Сообщение # 4
участник
Сейчас нет на сайте
shustr1k76, Time.deltaTime может тут быть, это просто число, даже если оно будет равно 0, что быть не может, тело все равно будет двигаться. Копай в сторону moveJoy.MoveInput (). В Debug выведи этот вектор и проанализируй. А вообще может у тебя еще где-то косяк.. Скинь настройки RigidBody.

Добавлено (12 марта 2016, 16:04)
---------------------------------------------
shustr1k76, возможно у тебя слишком большая масса тела стоит, поэтому энергия моментально поглощается


Сообщение отредактировал Egoor - Суббота, 12 Марта 2016, 16:05
shustr1k76Дата: Суббота, 12 Марта 2016, 16:35 | Сообщение # 5
почетный гость
Сейчас нет на сайте
Цитата Egoor ()
возможно у тебя слишком большая масса тела стоит, поэтому энергия моментально поглощается

нет, с массой все норм, код то работает но если сразу добавить после рывка, speedup = false. то он двигается, но не на то расстояние.
попробывал так, ничего не происходит
Код
if (speedJoy.IsPressed () && speedup) {
   Foo ();  
  }

    }
    private IEnumerator Foo()
    {    
  rd.AddForce (moveJoy.MoveInput () * 20 , ForceMode.Impulse);
  yield return new WaitForSeconds(3);  
  speedup = false;
    }
seamanДата: Суббота, 12 Марта 2016, 16:37 | Сообщение # 6
старожил
Сейчас нет на сайте
Корутины вызываются не так
EgoorДата: Суббота, 12 Марта 2016, 16:42 | Сообщение # 7
участник
Сейчас нет на сайте
shustr1k76, можешь русским языком объяснить, что тебе не нравится? Конечно он не будет двигаться на то же расстояние при действии силы за один кадр, как при действии этой же силы каждый кадр.

Добавлено (12 марта 2016, 16:40)
---------------------------------------------
Почему нельзя писать хоть чуточку грамотно, чтобы люди могли понять, что происходит у тебя в голове?

Добавлено (12 марта 2016, 16:42)
---------------------------------------------
shustr1k76, и все же массу выстави равной 1 и попробуй

shustr1k76Дата: Суббота, 12 Марта 2016, 16:52 | Сообщение # 8
почетный гость
Сейчас нет на сайте
Цитата Egoor ()
и все же массу выстави равной 1 и попробуй

и не менял изначально.
Цитата Egoor ()
Почему нельзя писать хоть чуточку грамотно, чтобы люди могли понять, что происходит у тебя в голове?

нужно толкнуть игрока при нажатии speedjoy, один раз. для этого использую speedup как бул.

Цитата Egoor ()
можешь русским языком объяснить, что тебе не нравится

если я делаю так, то он толкается так как мне надо
Код
if (speedJoy.IsPressed () && speedup) {
   
   rd.AddForce (moveJoy.MoveInput () * 2000 * Time.deltaTime, ForceMode.Impulse);

а если так, то он толкается не на то расстояние, а совсем чуть чуть
Код
if (speedJoy.IsPressed () && speedup) {
   
   rd.AddForce (moveJoy.MoveInput () * 2000 * Time.deltaTime, ForceMode.Impulse);
speedup = false;


Цитата seaman ()
Корутины вызываются не так

а поможет ли она?
я просто ей хочу поставить, speedup в false, через 3 сек, чтоб успел выполниться рывок(толчок)
EgoorДата: Суббота, 12 Марта 2016, 16:57 | Сообщение # 9
участник
Сейчас нет на сайте
shustr1k76, какие-то костыли пишешь.. Попробуй через velocity.

Добавлено (12 марта 2016, 16:57)
---------------------------------------------
Если ты хочешь один раз его толкнуть на то же расстояние, то очевидно, что нужно силу увеличить.. Подбирай значение.

shustr1k76Дата: Суббота, 12 Марта 2016, 18:04 | Сообщение # 10
почетный гость
Сейчас нет на сайте
Цитата Egoor ()
Если ты хочешь один раз его толкнуть на то же расстояние, то очевидно, что нужно силу увеличить.. Подбирай значение.

помог. спасибо
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » не выполняет код (обрыв кода)
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг