CEPII
@CEPII
Житель убежища 101

Как исправить код, чтобы объект направлялся только по прямой, не «дрифтуя»?

Здравствуйте, вот код:
spoiler
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class RotateTank2 : MonoBehaviour
{


    public Transform Selftransform;

    private Vector3 _force;


    private int rotate = 1;






    // Use this for initialization
    void Start()
    {

    }

    // Update is called once per frame
    void FixedUpdate()
    {

        Selftransform.position += _force;

        if (rotate == 1)
        {
            transform.Rotate(0, 0, 2);

        }

        if (Input.GetKey(KeyCode.D))
        {
            rotate = 0;
            _force += (Selftransform.up * Time.deltaTime) * 0.1f;


        }
        else
        {
            _force = Vector3.Lerp(_force, Vector3.zero, 10);
            rotate = 1;
        }

    }
}


По нажатия на кнопку танк передвигается по прямой, но при столкновении с другим объектом он движется по вектору так же верно по прямой, но боком. Как сделать так. чтобы объект ехал только по прямой не смотря на воздействия на него другой силы (то есть как повторить движение вперед реального танка).
  • Вопрос задан
  • 195 просмотров
Решения вопроса 1
Griboks
@Griboks Куратор тега C#
1. Отключите физику столкновений и двигайте через transform
2. или используйте абсолютно упругий материал и отключите инерцию качения и вращения.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@sulim000333
Есть функция "смотреть на" - lookAt(цель.tranform.position); измени rotation так, чтобы синяя стрелка смотрела вперед танка и примени эту функцию, должно заработать.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы