Итак, я делаю эту игру, где пользователь может перетаскивать мяч по экрану, но он не должен покидать игровое поле. Я получаю following problem, хотя, когда я подталкиваю его к коллайдерам, он отскакивает назад, и если я слишком сильно нажимаю, он просто отключается от экрана (мне нужно заставить его не уходить с экрана. Пользователь может перетащить все это по месту, но в пределах экрана, конечно).При перетаскивании объекта с rigidbody2D он проходит через коллайдеры (стены)
любые советы о том, как я могу решить эту проблему?
Вот код для волочения, который я использую:
using UnityEngine;
using System.Collections;
public class CircleManager : MonoBehaviour {
private bool dragging = false;
private Vector3 screenPoint;
private Vector3 offset;
// Pressionando
void OnMouseDown()
{
dragging = true;
screenPoint = Camera.main.WorldToScreenPoint(gameObject.transform.position);
offset = gameObject.transform.position - Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPoint.z));
}
// Arrastando
void OnMouseDrag()
{
Vector3 cursorPoint = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPoint.z);
Vector3 cursorPosition = Camera.main.ScreenToWorldPoint(cursorPoint) + offset;
//i tried with both below.
//transform.position = cursorPosition;
transform.GetComponent<Rigidbody2D>().MovePosition(cursorPosition);
}
// Soltando
void OnMouseUp()
{
dragging = false;
}
}
Спасибо!
* «Когда я нажимаю его на коллайдеры, он отскакивает назад» *, что именно вы ожидаете от него? – maksymiuk
Я ожидаю, что это просто не пройдет через стену, извините за отсутствие ясности! Мне нужно, чтобы он просто столкнулся и остался там, не позволяя игроку тащить его с экрана. – PossessWithin