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 benutRays
odeRaycast
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?