Как вращать камеру вокруг игрока в единстве c # - PullRequest
2 голосов
/ 30 мая 2019

Мне нужно вращать камеру вокруг игрового объекта игрока, удерживая левую кнопку мыши. Как бы я подошел к этому?

Кроме того, я немного читал о Векторе 3, но у меня нет полного понимания этого. Любой, кто мог бы объяснить это, был бы очень признателен.

Я смотрел видео на YouTube, и это - именно та концепция, которую я искал. У меня просто были проблемы с применением его к моему коду.

Я немного переживаю, экзамены приближаются, и мой учитель не объяснил большинство вещей, которые объясняются в видео.

// Это мой код внутри камеры, который следует за мячом / игроком

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ScriptBallCam : MonoBehaviour
{
public GameObject player;

private Vector3 offset;

void Start()
{
    offset = transform.position - player.transform.position;
}

void LateUpdate()
{
    transform.position = player.transform.position + offset;
}

// Конец кода внутри камеры

// Код внутри игрока / мяча

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ScriptBall : MonoBehaviour
{



public float speed;



private Rigidbody rb;





void Start()
{
    rb = GetComponent<Rigidbody>();
}

void FixedUpdate()
{
    float moveHorizontal = Input.GetAxis("Horizontal");
    float moveVertical = Input.GetAxis("Vertical");

    Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical);

    rb.AddForce(movement * speed);
}

// код конца

Результаты, которые я ожидаю, точно показаны в 1:22 в

https://www.youtube.com/watch?v=xcn7hz7J7sI

1 Ответ

0 голосов
/ 31 мая 2019

Попробуй это.Сценарий идет на вашу камеру.

В основном этот скрипт работает, сначала получая направление, в котором движется ваша мышь. В этом случае ось X Mouse X (направление влево / вправо).Затем мы берем нашу скорость вращения turnSpeed и используем ее для вращения вокруг игрока на это количество градусов, используя Quaternion.AngleAxis .Наконец, мы следим за тем, чтобы камера всегда смотрела на игрока, используя transform.LookAt

 using UnityEngine;  
 using System.Collections;    

public class OrbitPlayer : MonoBehaviour {

     public float turnSpeed = 5.0f;
     public GameObject player;

     private Transform playerTransform;     
     private Vector3 offset;
     private float yOffset = 10.0f;
     private float zOffset = 10.0f;

     void Start () {
         playerTransform = player.transform;
         offset = new Vector3(playerTransform.position.x, playerTransform.position.y + yOffset, playerTransform.position.z + zOffset);
     }

     void FixedUpdate()
     {
         offset = Quaternion.AngleAxis (Input.GetAxis("Mouse X") * turnSpeed, Vector3.up) * offset;
         transform.position = playerTransform.position + offset; 
         transform.LookAt(playerTransform.position);
     }  
}

. Здесь много информации по этой теме: https://answers.unity.com/questions/600577/camera-rotation-around-player-while-following.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...