В моем предыдущем посте я спрашиваю, как остановиться на зеленой линии яблока. Я успешно остановился на зеленой линии яблока, изменив этот код transform.position = tempvec
на
r.MovePosition(tempVec)
Но есть эта новая проблема, мне нужно пройти через другое яблоко,В старом коде я могу легко пройти через другое яблоко, но не могу остановиться на зеленой линии яблока. Новый код я могу остановиться на зеленой линии яблока, но не могу пройти через другое яблоко, если я ударю по другому яблоку, оно оттолкнется.
Красное яблоко может двигаться только внутри Зеленого яблока.
Как я могу пройти через другое яблоко, но также остановиться на зеленой линии яблока?
Camera mainCamera;
float zAxis = 0;
Vector3 clickOffset = Vector3.zero;
Rigidbody2D r;
public Transform apple;
// Use this for initialization
void Start()
{
mainCamera = Camera.main;
mainCamera.gameObject.AddComponent<Physics2DRaycaster>();
zAxis = transform.position.z;
r = gameObject.GetComponent<Rigidbody2D>();
}
public void OnBeginDrag(PointerEventData eventData)
{
clickOffset = transform.position - mainCamera.ScreenToWorldPoint(new Vector3(eventData.position.x, eventData.position.y, zAxis));
}
public void OnDrag(PointerEventData eventData)
{
//Use Offset To Prevent Sprite from Jumping to where the finger is
Vector3 tempVec = mainCamera.ScreenToWorldPoint(eventData.position) + clickOffset;
tempVec.z = zAxis;
r.MovePosition(tempVec);
// transform.position = tempVec;
r.velocity = Vector3.zero ;
r.angularVelocity = 0f;
}
public void OnEndDrag(PointerEventData eventData)
{
}
Вот так выглядит моя игра. Ящик, в который я положил свое яблоко. В коробке стоит галочка isTrigger. Коробка не имеет значения, просто поставьте ее, чтобы вы лучше поняли мою игру.
Изображение для лучшего понимания