Unity3D: добавление заряженной силы по отношению к положению

Я пытаюсь сделать игру, которая "отчасти" имитирует стрельбу из игры "черви". Игрок может выбрать положение (круговое) объекта, а затем сила, приложенная к объекту, должна двигаться в направлении, на которое он указывает. Я пытался использовать AddForce(transform.right) код, но это будет просто направо. (2D BoxCollider и RigidBody2D)

Затем наступает сложная часть, заставляющая игрока выбирать силу, заряжая ее. Когда игрок удерживает клавишу "F", я хочу, чтобы мощность поднялась до определенной точки. Как только он достигнет этой точки, я хочу, чтобы он снова опустился, а затем снова поднялся, чтобы игрок мог выбрать силу, которую он хочет. Я понятия не имею, как это сделать.

1 ответ

Решение

Прошло некоторое время с тех пор, как я занимался кодированием Unity, поэтому в моем синтаксисе могут быть небольшие ошибки, но это должно дать вам представление о том, как этого добиться. Лучшим вариантом для цикла является использование сопрограммы, чтобы не блокировать основной поток.

в Update() проверьте "на ключ вниз" для F и запустите эту сопрограмму:

IEnumerator Cycle()  
{
 float max = 10.0f;
 float min = 1.0f;
 float interval = 0.5f;

  do 
   {             
     for(int i=min;i<max;i++)
     {
       PowerValue = i;
       yield return new waitforseconds(interval);
      if(!input.getkey(f))
          break;
     }
     for(int i=max;i>min;i--)
     {
       PowerValue = i;
       yield return new waitforseconds(interval);
       if(!input.getkey(f))
          break;
     }

   } while(input.getkey(f));
}

И обратно в update() используйте это powerValue с getKeyUp(f)

А вот настройка PowerValue в качестве параметра, который запрещает коду устанавливать максимальные и минимальные значения вне диапазона от 1 до 10 (настраивается)

private float powerValue = 1.0f;
public float PowerValue
{
get { return powerValue; }
set {
      if(value>10f)
         powerValue=10f;
      else if (value<1f)
         powerValue=1f;
      else
          powerValue=value;
    }
}
Другие вопросы по тегам