Unity. почему код только один раз сработал? Uptade->GetKeyDown()
public static Vector3[] detD(float MaxR, float PositionX, float PositionY, int num)
{
Vector3[] fr = new Vector3[2*num];
int gh = 0;
for (int r = 0; r < 2*num; r++)
{
float bol = (r-gh) * 2 * MaxR / num;
if (r == 0)
{
fr[r] = new Vector3(PositionX - bol, PositionY,
Convert.ToSingle(Math.Sqrt(MaxR * MaxR -
(PositionX - bol) * (PositionX - bol))));
} else if (r == 2*num-1)
{
fr[r] = new Vector3(PositionX - bol, PositionY,
Convert.ToSingle(Math.Sqrt(MaxR * MaxR -
(PositionX - bol) * (PositionX - bol))));
}
else
{
fr[r] = new Vector3(PositionX - bol, PositionY,
Convert.ToSingle(Math.Sqrt(MaxR * MaxR -
(PositionX - bol) * (PositionX - bol))));
fr[++r] = new Vector3(fr[r-1].x, 0, -fr[r-1].z);
gh++;
}
}
return fr;
}
private Vector3[] gt = detD(6, 6, 3, 20);
private int numberSloat = 0;
public float MouseSpeed = 100f;
private float xrotation = 0f;
private float yrotation = 0f;
private float zrotation = 0f;
public float MaxX;
public float MaxZ;
public float speedMh;
private void Update()
{
int fr=0;
if (Input.GetKey("x"))
{
float MouseX = Input.GetAxis("Mouse X") * MouseSpeed * Time.deltaTime;
float MouseY = Input.GetAxis("Mouse Y") * MouseSpeed * Time.deltaTime;
xrotation -= MouseX;
yrotation -= MouseY;
xrotation = Mathf.Clamp(xrotation, -90f, 90f);
yrotation = Mathf.Clamp(yrotation, -90f, 90f);
transform.rotation = Quaternion.Euler(yrotation, -xrotation, 0f);
}
if (Input.GetKeyDown(KeyCode.A))
{
transform.position = gt[fr++];
}
}
во многих случаях я сталкиваюсь с этой проблемой. Код работает только 1 раз
if (Input.GetKeyDown(KeyCode.A))
{
transform.position = gt[fr++];
}
этот часть не работает многократно
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
private void Update()
{
int fr=0;
// ...
if (Input.GetKeyDown(KeyCode.A))
{
transform.position = gt[fr++];
}
}
У вас fr обнуляется каждый раз при вхождении в функцию и transform.position получает одно и то же значение при нажатии клавиши, fr у вас всегда тут равно 0.