Вращение и балансировка HingeJoint2D с помощью перетаскивания мышью

Я пытаюсь реализовать физику, похожую на эту игру:

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);

    }
}

person Danish Waseem    schedule 19.04.2016    source источник


Ответы (1)


Я думаю, что вы могли бы использовать компоненты hardbody2d и параметр гравитации, чтобы очень просто сделать такую ​​балансировку.

Вот ссылка на аналогичный вопрос с очень хорошим ответом, который может вам помочь

person Jessy Doyle    schedule 19.04.2016
comment
Я вижу, что вы уже используете жесткие тела, я думаю, вам просто нужно использовать уже доступную настройку гравитации, хотя вам, возможно, потребуется немного настроить ее, чтобы получить желаемый эффект балансировки для игры. - person Jessy Doyle; 19.04.2016