так что у меня есть эта игра, в которой вы перемещаете машину влево и вправо с помощью «A» и «D». Для этого я использую следующий код: нажмите «A»:
characterBody.AddForce(-moveSpeed, 0, 0, ForceMode.Impulse);
, нажмите «D»:
characterBody.AddForce(moveSpeed, 0, 0, ForceMode.Impulse);
Я сейчас пытаюсь перенести эту игру на мобильный, используя касание с обеих сторон экрана. Вот мой код для этого, использующий те же понятия:
void Update()
{
int i = 0;
//loop over every touch found
while (i*2 < Input.touchCount)
{
if (Input.GetTouch(i).position.x > ScreenWidth / 2)
{
//move right
//RunCharacter(1.0f);
characterBody.velocity = Vector3.zero;
characterBody.AddForce(moveSpeed, 0, 0, ForceMode.Impulse);
}
if (Input.GetTouch(i).position.x < ScreenWidth / 2)
{
//move left
//RunCharacter(-1.0f);
characterBody.velocity = Vector3.zero;
characterBody.AddForce(-moveSpeed, 0, 0, ForceMode.Impulse);
}
++i;
}
}
Когда я делаю этот код, независимо от того, насколько высоким или низким я установил переменную moveSpeed, он не будет иметь такого же эффекта. Вот что происходит с клавишами со стрелками / «A» и «D»: https://infinitecarspeeder.netlify.com. Я хочу, чтобы он имел такой эффект, но, тем не менее, он не имеет эффекта ForceMode.Impulse и очень медленно переключает направления. Большое спасибо!
РЕДАКТИРОВАТЬ:
Вот мой код, который я использую для перемещения клавиатуры (работает отлично):
void FixedUpdate(){
transform.Translate (Vector3.forward * Time.deltaTime * forwardSpeed);
if(Input.GetKey(KeyCode.A)||Input.GetKey(KeyCode.LeftArrow)){
MoveLeft();
}
if(Input.GetKey(KeyCode.D)||Input.GetKey(KeyCode.RightArrow)){
MoveRight();
}
}
public void MoveLeft()
{
rb.AddForce(-10.75f, 0, 0, ForceMode.Impulse);
}
public void MoveRight()
{
rb.AddForce(10.75f, 0, 0, ForceMode.Impulse);
}