@parusa

Как сделать игру от третьиго лица?

Я делаю игру на подобии игры баланс , есть шарик который катается по миру
Вот код при помощи которого он это делает:

private Rigidbody rb;
public int speed = 1; // скорость передвижения
    void Start()
    {
        // Получить доступ к компоненту Rigidbody
        rb = GetComponent<Rigidbody>();
    }

    void FixedUpdate()
    {
        // Нажатие стрелочки влево или вправо
        float moveHorizontal = Input.GetAxis("Horizontal");

        // Нажатие стрелочки вперёд или назад
        float moveVertical = Input.GetAxis("Vertical");

        // Перемещение шара
        Vector3 movement = new Vector3(moveHorizontal * speed, 0.0f, moveVertical * speed);
        rb.AddForce(moveHorizontal * speed, 0.0f, moveVertical * speed);
    }

Дальше,я установил cinemamachine и наcтроил
В чем проблема,если повернуть камеру в игре при нажатии кнопки вперед он едет назад из-за того что ракурс камеры изменен,это надо иcправить

Пробовал запихнуть игрока в пустышку которая будет поворачиваться относительно камера на нужный угол градусов,но как выяснилось метод addForce работает на глобальных координатах
Если же использовать addRelativeForce то тогда это работает но есть проблема из-за того что шарик когда двигается тоже проворачивается AddRelativeForce работает некорректно.
  • Вопрос задан
  • 103 просмотра
Пригласить эксперта
Ответы на вопрос 1
KraGenDeveloper
@KraGenDeveloper
Unity Developer
короче: У тебя есть "Игрок" и пустой Объект. На пустой объект накидаешь скрипт который берёт координаты перемещения от "Игрок"а а и перемещаеться на них. Тоесть вот скрипт в инспекторе добавишь игрока. Его накидать на пустой объект за которым следит камера
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class TargetCamera : MonoBehaviour
{
    public GameObject Player;
    Vector3 pos;
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        pos.x = Player.transform.position.x;
        pos.y = Player.transform.position.y;
        pos.z = Player.transform.position.z;

        transform.position = new Vector3(pos.x, pos.y,pos.z);
    }
}
Ответ написан
Ваш ответ на вопрос

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

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