Ziehen Sie das Objekt in Unity 2D
Habe ich mich für ein Objekt ziehen Skript für Unity 2D. Ich habe gefunden eine gute Methode, über das internet, aber es scheint, es ist gerade in Unity 3D. Es ist nicht gut für mich, wie ich mache ein 2D Spiel und es ist keine Kollision mit dem "Mauern".
Habe ich versucht umzuschreiben, um 2D, aber ich stürzte in Fehler, die mit Vektoren.
Ich würde mich sehr freuen, wenn Ihr mir helfen könntet umzuschreiben, um 2D.
Hier ist der code, was das arbeiten in 3D:
using UnityEngine;
using System.Collections;
[RequireComponent(typeof(BoxCollider))]
public class Drag : MonoBehaviour {
private Vector3 screenPoint;
private Vector3 offset;
void OnMouseDown() {
offset = gameObject.transform.position - Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPoint.z));
}
void OnMouseDrag()
{
Vector3 curScreenPoint = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPoint.z);
Vector3 curPosition = Camera.main.ScreenToWorldPoint(curScreenPoint) + offset;
transform.position = curPosition;
}
}
InformationsquelleAutor Zwiebel | 2014-04-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du bist fast da.
Ändern Sie die RequireComponent Zeile in deinen code:
Und fügen Sie eine BoxCollider2D-Komponente auf das Objekt, zu dem Sie fügen Sie Ihr Skript. Habe es gerade getestet und es funktioniert einwandfrei.
InformationsquelleAutor user2599140
Für diejenigen, die haben problem mit diesem code habe ich entfernt
screenPoint
und ersetzt es mit10.0f
(das ist der Abstand des Objekts von der Kamera). Kann man float verwenden, was Sie brauchen. Jetzt funktioniert es. Auch das Objekt muss eineBoxCollider
oderCircleCollider
um in der Lage zu sein, mit sich herum schleppte. Also hat es keinen Sinn mit[RequireComponent(typeof(BoxCollider2D))]
.Den letzten code, der funktionierte gut für mich ist:
InformationsquelleAutor Alex Jolig