所以我有一个游戏,你用"a"one_answers"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"one_answers"D"的含义:https://infinitecarspeeder.netlify.com.我希望它有那种效果,但它没有力模式。脉冲效果,而且切换方向非常慢。非常感谢!
编辑:
这是我用于键盘移动的代码(运行良好(:
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);
}
使用键盘时,是否将字符速度重置为0?如果你不这样做,这可能会让你的感觉有所不同。如果你在每次更新时将速度重置为零,那么汽车可以移动的最大速度是1.0f,因为它无法加速。如果你不这样做,汽车的移动速度可以超过1.0f,这可以解释速度的差异。