Страница 1 из 1

Вращательный момент без ригидбади

СообщениеДобавлено: 19 фев 2018, 02:11
Maslinka27
2D
Сделал скрипт для пушки, чтобы следила за мышкой. Она работает с трансформом, и все повороты исполняются мгновенно. Мне же надо сделать так, чтобы было как AddTorque в ригидбади. Прикрутил его, сделал следующий скрипт:
[syntax=]
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Gun : MonoBehaviour
{
public float Torque;

void Update()
{
var mousePos = Input.mousePosition;

mousePos = Camera.main.ScreenToWorldPoint(mousePos);

var angle = Vector2.Angle(Vector2.right, mousePos - transform.position);

if (transform.position.y < mousePos.y) GetComponent<Rigidbody2D>().AddTorque(-Torque, ForceMode2D.Force);
else GetComponent<Rigidbody2D>().AddTorque(Torque, ForceMode2D.Force);
}
}
[/syntax]
Пушка не двигается на кинематике, а на динамике отсоединяется от корпуса робота. Не понимать #:-s . Подскажите, что не так, или как сделать по-другому

Re: Вращательный момент без ригидбади

СообщениеДобавлено: 19 фев 2018, 02:16
Maslinka27
Поэксперементировал с условием (сделал простое "если Х больше 3"). Пушка начала вращаться, но только на динамике, соответственно она не может ходить вместе с роботом, что же тогда делать? И какое условие мне поставить, чтобы на мышку смотрел?

Re: Вращательный момент без ригидбади

СообщениеДобавлено: 20 фев 2018, 04:17
1max1
Quaternion.Lerp ?

Re: Вращательный момент без ригидбади

СообщениеДобавлено: 20 фев 2018, 10:14
Cr0c
1max1 писал(а):Quaternion.Lerp ?

Он не фиксирует скорость изменения.
Надо посчитать угол (Vector3.Angle), определить направление вращения (Vector3.Dot) и вращать через transform.Rotate(Vector3.forward, rotateSpeed * Time.deltaTime, Space.world)