Faites glisser l'objet dans Unity 2D
J'ai regardé pour un objet en faisant glisser le script pour Unity 2D. J'ai trouvé une bonne méthode sur l'internet, mais il semble qu'il est juste de travailler en 3D de l'Unité. Il n'est pas bon pour moi car je suis en train de faire un jeu en 2D, et ce n'est pas entrer en collision avec les "murs" de cette façon.
J'ai essayé de le réécrire à la 2D, mais j'ai percuté erreurs, avec des Vecteurs.
Je serais très heureux si vous pouviez m'aider à le réécrire à la 2D.
Voici le code du travail en 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;
}
}
source d'informationauteur Zwiebel
Vous devez vous connecter pour publier un commentaire.
Vous y êtes presque.
Changer le RequireComponent ligne dans votre code:
Et ajouter un BoxCollider2D composant de l'objet auquel vous ajoutez votre script. Je l'ai juste testé et il fonctionne très bien.
Pour ceux qui ont de problème avec ce code, je l'ai enlevé
screenPoint
et l'a remplacé par10.0f
(qui est la distance de l'objet à partir de l'appareil photo). Vous pouvez utiliser n'importe quel float vous en avez besoin. Maintenant, il fonctionne. Aussi l'objet besoin d'unBoxCollider
ouCircleCollider
à pouvoir être déplacé. Donc il n'y a pas de point à l'aide de[RequireComponent(typeof(BoxCollider2D))]
.Le code final qui a bien fonctionné pour moi: