在每次触摸之间更改 X 的值
Change the value of X between each touch
我正在学习 C#,请帮帮我,我正在尝试传递我用来发出键盘声音的代码,但是当我使用触摸时,有时它会停止检测或增加值,我已经在一些设备上尝试过了设备和同样的事情发生了,我希望有人告诉我如何使它正常工作而没有那个故障。
这是我在电脑上使用的代码
private void FixedUpdate()
{
if (Input.GetKey(KeyCode.D))
{
direccion = 5;
}
else if (Input.GetKey(KeyCode.A))
{
direccion = -5;
}
if (run2 == true)
{
gameObject.transform.Translate(direccion * Time.deltaTime, velocidad * Time.deltaTime, 0);
}
这是我尝试用于手机的代码。
private void FixedUpdate()
{
foreach (Touch touch in Input.touches)
if (touch.phase == TouchPhase.Began)
{
direct = true;
if (direct == true)
{
getTouch++;
direct = false;
}
if (getTouch ==1)
{
direccion = 5;
}
else if (getTouch >= 2)
{
direccion = -5;
getTouch = 0;
direct = true;
}
}
if (run2 == true)
{
gameObject.transform.Translate(direccion * Time.deltaTime, velocidad * Time.deltaTime, 0);
}
设置好后
direct = true;
下一个
if(direct == true)
永远如此
一般来说,不要使用计数器等,而是简单地做例如
private int direction = 5;
然后以后只交替做符号
if (touch.phase == TouchPhase.Began)
{
direccion *= -1;
}
不过一般来说:
你的第一个代码没问题,因为它使用了连续输入GetKey
,每一帧都是如此。
但是 每当您使用 单个事件 输入时 GetKeyDown
或者在您的情况下是 TouchPhase.Began
true
仅在 一个单帧内 您应该在 Update
!
中输入
由于可能不会在每一帧都调用 FixedUpdate
,因此您可能只是在未调用 FixedUpdate
的帧内点击 => 您错过了此触摸输入。
所以宁愿使用
private int direction = 5;
private void Update()
{
foreach (Touch touch in Input.touches)
{
if (touch.phase == TouchPhase.Began)
{
direccion *= -1;
}
}
}
private void FixedUpdate ()
{
if (run2)
{
transform.Translate(direccion * Time.deltaTime, velocidad * Time.deltaTime, 0);
}
}
我正在学习 C#,请帮帮我,我正在尝试传递我用来发出键盘声音的代码,但是当我使用触摸时,有时它会停止检测或增加值,我已经在一些设备上尝试过了设备和同样的事情发生了,我希望有人告诉我如何使它正常工作而没有那个故障。
这是我在电脑上使用的代码
private void FixedUpdate()
{
if (Input.GetKey(KeyCode.D))
{
direccion = 5;
}
else if (Input.GetKey(KeyCode.A))
{
direccion = -5;
}
if (run2 == true)
{
gameObject.transform.Translate(direccion * Time.deltaTime, velocidad * Time.deltaTime, 0);
}
这是我尝试用于手机的代码。
private void FixedUpdate()
{
foreach (Touch touch in Input.touches)
if (touch.phase == TouchPhase.Began)
{
direct = true;
if (direct == true)
{
getTouch++;
direct = false;
}
if (getTouch ==1)
{
direccion = 5;
}
else if (getTouch >= 2)
{
direccion = -5;
getTouch = 0;
direct = true;
}
}
if (run2 == true)
{
gameObject.transform.Translate(direccion * Time.deltaTime, velocidad * Time.deltaTime, 0);
}
设置好后
direct = true;
下一个
if(direct == true)
永远如此
一般来说,不要使用计数器等,而是简单地做例如
private int direction = 5;
然后以后只交替做符号
if (touch.phase == TouchPhase.Began)
{
direccion *= -1;
}
不过一般来说:
你的第一个代码没问题,因为它使用了连续输入GetKey
,每一帧都是如此。
但是 每当您使用 单个事件 输入时 GetKeyDown
或者在您的情况下是 TouchPhase.Began
true
仅在 一个单帧内 您应该在 Update
!
由于可能不会在每一帧都调用 FixedUpdate
,因此您可能只是在未调用 FixedUpdate
的帧内点击 => 您错过了此触摸输入。
所以宁愿使用
private int direction = 5;
private void Update()
{
foreach (Touch touch in Input.touches)
{
if (touch.phase == TouchPhase.Began)
{
direccion *= -1;
}
}
}
private void FixedUpdate ()
{
if (run2)
{
transform.Translate(direccion * Time.deltaTime, velocidad * Time.deltaTime, 0);
}
}