J'essaye de créer un effet de glissement. J'ai un projet où vous êtes censé tirer un os de viande. Le dragging fonctionne, mais quand je prends l'os, je peux le déplacer dans toutes les directions. Ce que je voudrais accomplir, c'est que je ne peux que le faire glisser dans une direction. Sur les images ci-dessous, je veux dire la ligne rouge. J'ai essayé beaucoup de choses mais rien n'a fonctionné jusqu'ici. Toute aide est appréciée.Glisser un objet sur une ligne
J'ai utilisé ces fonctions pour l'entraînement.
void OnMouseDown()
{
offset = this.transform.position - Camera.main.ScreenToWorldPoint(new Vector2(Input.mousePosition.x, Input.mousePosition.y));
}
void OnMouseDrag()
{
Vector3 curScreenPoint = new Vector2(Input.mousePosition.x, Input.mousePosition.y);
Vector3 curPosition = Camera.main.ScreenToWorldPoint(curScreenPoint) + offset;
transform.position = curPosition;
}
Est-il raisonnable de supposer que cela est censé se déplacer uniquement dans la direction de la flèche rouge? si oui, connaissez-vous les degrés que la flèche rouge est en relation avec l'objet? Est-ce que la flèche rouge change d'angle? Si non, pouvons-nous supposer que c'est toujours à un angle de 45 degrés? –
Oui, uniquement dans le sens de la flèche rouge. Eh bien, chacun des objets a une rotation différente donc ce n'est pas toujours 45. – Richarrd82
Ahh, les flèches qui peuvent changer les angles rendent cela un peu plus compliqué. Maintenant, nous entrons dans l'équation y = mx + b pour déterminer combien d'unités X et Y chaque mousedrag doit déplacer les unités. Je commencerais par faire en sorte que l'image bouge d'abord aux angles de 45 degrés, puis je construirais sur celle-ci pour permettre des angles différents. –