Я пытаюсь реализовать физику, похожую на эту игру:
https://sites.google.com/site/newstudyhall/games/tilt-2
У меня есть спрайт «Рука», который является кинематическим, и на нем есть HingeJoint2D. Другой спрайт «Палка», который не является Кинематичным, подключается к руке через HingeJoint2D. Я хочу сбалансировать Палку на руке, перемещая руку.
Я приложил следующий скрипт от руки. Я двигаю рукой с помощью перетаскивания мышью и прикладываю силу к стику в направлении, противоположном движению мыши. Но это не работает, как в вышеупомянутой игре.
Есть ли какой-либо компонент в Unity, который я могу использовать для получения этого результата или как я могу его реализовать?
private Vector3 screenPoint;
private Vector3 offset;
void FixedUpdate()
{
//ON CLICK
if (Input.GetButtonDown("Fire1"))
{
screenPoint = Camera.main.WorldToScreenPoint(gameObject.transform.position);
offset = gameObject.transform.position - Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, 10));
}
//ON DRAG
if (Input.GetButton("Fire1"))
{
Vector3 cursorPoint = new Vector3(Input.mousePosition.x, Input.mousePosition.y, 10);
//HAND POSITION CHANGE WITH MOUSE DRAG
Vector2 cursorPosition = Camera.main.ScreenToWorldPoint(cursorPoint) + offset;
transform.position = cursorPosition;
//APPLY FORCE ON TRAY IN OPPOSITE DIRECTION OF MOUSE MOVEMENT
GameObject.Find("Stick").GetComponent<Rigidbody2D>().AddForce(((cursorPosition.normalized * 5)) * -1, ForceMode2D.Impulse);
}
}