unity3d 左右移动播放器

mwkjh3gx  于 2022-11-15  发布在  其他
关注(0)|答案(1)|浏览(196)

我想让火柴人从一边跳到另一边做一个曲线,只需触摸移动的设备上的触摸输入,然后跳到另一边。

我已经得到了这个脚本,但它取决于你按下屏幕的一边:

public class Move : MonoBehaviour
{
    void Update ( )
    {
        if ( Input.touchCount > 0 )
        {
            Touch touch = Input.GetTouch(0);
            if ( touch.phase == TouchPhase.Began )
            {
                if ( touch.position.x < Screen.width && transform.position.x < 1.75f )
                    transform.position = new Vector2 ( transform.position.x - 1.75f, transform.position.y );
                if ( touch.position.x > Screen.width / 2 && transform.position.x < 1.75f )
                    transform.position = new Vector2 ( transform.position.x + 1.75f, transform.position.y );
            }
        }
    }
}
ivqmmu1c

ivqmmu1c1#

下面是一个代码示例,它可以实现你想要实现的目标。它故意很长,因为有时候它的逻辑会让人在刚开始的时候犯错误。我最初写了一小段代码,大约是行数的1/3,但是之后我们又回到了同一条船上。例如,我不喜欢重复代码。当我们翻转位置的值时可以看到。
话虽如此,这里有一个方法来完成你所追求的:

public class Move : MonoBehaviour
{
    void Update ( )
    {
        if ( Input.touchCount > 0 )
        {
            var touch = Input.GetTouch(0);
            if ( touch.phase == UnityEngine.TouchPhase.Began )
            {
                // First test, see what side of the screen was pressed.
                if ( touch.position.x < Screen.width / 2 )
                {
                    // Now see if the object is on the other side of the screen.
                    if ( transform.position.x > 0 )
                    {
                        var p = transform.position;
                        p.x *= -1;
                        transform.position = p;
                    }
                }
                else // touch.position.x > Screen.width / 2
                {
                    if ( transform.position.x < 0 )
                    {
                        var p = transform.position;
                        p.x *= -1;
                        transform.position = p;
                    }
                }
            }
        }
    }
}

相关问题