Unity2DのチュートリアルをInputSystemに書き換える(4)


EnhancedTouch + LineRenderer

ここ参考に指でなぞったところ(というか、始点と現在位置)に線を引きたい。
という事で同じようにしてやってみた。

まずは空のオブジェクトを作って(今回はプレハブ化してみた)、スクリプトをセット。

void Update()
    {
        // 二本指でタッチは考慮しない。Vector2から3へは自動変換みたいなので気にしない。
        foreach (var touch in Touch.activeTouches){
           switch (touch.phase){
                case TouchPhase.Began:
                    Vector2 cameraPosition1 = touch.screenPosition;
                    startPos = Camera.main.ScreenToWorldPoint(cameraPosition1);

                    //ラインの起点設定
                    renderer.positionCount = 1;
                    renderer.SetPosition(0, startPos);

                    break;
                case TouchPhase.Moved:
                    Vector2 cameraPosition2 = touch.screenPosition;
                    pos = Camera.main.ScreenToWorldPoint(cameraPosition2);
                    rendererPositions=true;
                    break;
                case TouchPhase.Ended:
                    renderer.positionCount = 0;
                    rendererPositions=false;
                    break;
           }

        }

        // 元のマウスの方も微妙に修正
        if (Input.GetMouseButtonDown(0))
        {
            //タッチ位置取得
            Vector3 cameraPosition = Input.mousePosition;
            cameraPosition.z = 10.0f;
            startPos = Camera.main.ScreenToWorldPoint(cameraPosition);

            //ラインの起点設定
            renderer.positionCount = 1;
            renderer.SetPosition(0, startPos);
        }
        else if (Input.GetMouseButton(0))
        {
            //タッチ位置取得
            Vector3 cameraPosition = Input.mousePosition;
            cameraPosition.z = 10.0f;
            pos = Camera.main.ScreenToWorldPoint(cameraPosition);
            rendererPositions=true;
        }
        else if (Input.GetMouseButtonUp(0))
        {
            renderer.positionCount = 0;
            rendererPositions=false;
        }

        // ラインレンダラーに座標を設定し線を描画
        if (rendererPositions)
        {
            renderer.positionCount = 2;
            renderer.SetPosition(1, pos);
        }
    }
}

とりあえずタッチ操作もある程度出来たので満足