Ziehen und Verschieben von 2D-GameObject

so wie meine vorherigen Threads zeigen, erstelle ich eingameObject von Sprites zur Laufzeit mit folgendem Code:

 tex = Resources.Load<Texture2D>("pig") as Texture2D;
 Sprite sprite = new Sprite();
 sprite = Sprite.Create(tex, new Rect(0, 0, 250, 150), new Vector2(0.5f, 0.5f));
 GameObject newSprite = new GameObject();
 newSprite.AddComponent<Rigidbody2D>();
 newSprite.GetComponent<Rigidbody2D>().gravityScale = 0f;
 newSprite.AddComponent<ObjectMovement>();
 newSprite.AddComponent<SpriteRenderer>();
 SR = newSprite.GetComponent<SpriteRenderer>();
 SR.sprite = sprite;

ie Sie sehen, habe ich ein Skript "ObjectMovement ", Ich möchte in diesem Skript überprüfen, ob jemand dieses bestimmte @ ziehgameObject und wenn ja, lassen Sie es der Berührungsposition folgen, um nur zu erwähnen - dieses Spiel ist 2D. Ich habe @ nie benutRaysodeRaycast also ich bin mir nicht sicher wo ich falsch gelaufen bin. Jedenfalls ist hier mein Skriptcode:

public SpriteRenderer selection=null;
    void Update()
    {
        if (Input.touchCount >= 1)
        {
            foreach (Touch touch in Input.touches)
            {
                Ray ray = Camera.main.ScreenPointToRay(touch.position);
                RaycastHit hit;
                switch (touch.phase)
                {
                    case TouchPhase.Began:
                        if (Physics.Raycast(ray, out hit, 100))
                            selection = hit.transform.gameObject.GetComponent<SpriteRenderer>();
                        break;
                    case TouchPhase.Moved:
                        selection.transform.position = new Vector2(selection.transform.position.x + touch.position.x / 10, selection.transform.position.y + touch.position.y / 10);
                        break;
                    case TouchPhase.Ended:
                        selection = null;
                        break;
                }
            }
        }
    }

So im Grunde - wenn Sie den Bildschirm berühren, feuern Sie einray und überprüfe welchesgameObject befindet sich in dieser Position. Wenn Sie den Finger bewegen, lassen Sie ihn folgen. Ziehen und ablegen. Vielen Dank

BEARBEITEN Mir ist aufgefallen, dass das Skript an jedes @ angehängt isgameObject was ist nicht effektiv, irgendwelche Ideen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage