长按屏幕以实现角色动作的统一
本文关键字:角色 屏幕 实现 | 更新日期: 2023-09-27 18:22:20
我想在屏幕上实现长点击。。如果用户在屏幕上长按,则x轴和y轴的位置会减小,并且一旦用户松开敲击,x就会增大,y就会减小。我做了一些事,但运气不好。。这是我一直在尝试的代码。
public class move : MonoBehaviour
{
public Vector2 velocity = new Vector2(40,40);
public float forwardspeed=0.02f;
Vector2 movement;
// Use this for initialization
void Start ()
{
Debug.Log("start+"+Input.touchCount);
movement.x+=(forwardspeed);
movement.y-=(forwardspeed);
rigidbody2D.velocity = movement;
}
// Update is called once per frame
void FixedUpdate ()
{
int i=0;
while (i < Input.touchCount)
{
// Is this the beginning phase of the touch?
if (Input.GetTouch(i).phase == TouchPhase.Began)
{
Debug.Log("input touch count"+Input.touchCount);
// rigidbody2D.gravityScale =0;
movement.x+=(forwardspeed);
movement.y+=(forwardspeed);
rigidbody2D.velocity = movement;
}
else if (Input.GetTouch(i).phase == TouchPhase.Ended)
{
movement.x += (forwardspeed);
movement.y -= (forwardspeed);
rigidbody2D.velocity = movement;
}
++i;
}
}
}
您可以使用Input.touchCount
通过非常简单的代码来完成所需的操作。
如果您希望在用户触摸屏幕时发生某些行为,则意味着您希望在Input.touchCount
为非零时发生该行为。例如,
void FixedUpdate() {
if(Input.touchCount > 0) { //user is touching the screen with one or more fingers
//do something
} else { //user is not currently touching the screen
//do something else
}
}
具体到您的代码,您可能希望在Input.touchCount
为零时将角色的速度设置为某个值,然后在不为零时将其设置为其他值。
void FixedUpdate() {
if(Input.touchCount > 0) {
rigidbody2D.velocity = new Vector2(forwardspeed, forwardspeed);
} else {
rigidbody2D.velocity = new Vector2(forwardspeed, -forwardspeed);
}
}
注意else
块中的负号。我们只是根据状态将速度设置为+/-,而不是像以前那样加减值。