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;
}
}