Создается ряд объектов через скрипт, к одному из них нужно как-то привязать камеру от 3-го лица.
Скрипт камеры:
Синтаксис:
Используется csharp
using UnityEngine;
public class CameraFollow : MonoBehaviour
{
public float speedX = 360f;
public float speedY = 240f;
public float limitY = 40f;
private float _currentYRotation;
private GameObject target;
private Vector3 _position //для сокращения
{
get { return target.transform.position; }
set { target.transform.position = value; }
}
private void Start()
{
target = PlayerEntity.playerEntity[0]; //находим объект, к которому привяжем камеру
}
private void LateUpdate() //Скрипт камеры
{
var mx = Input.GetAxis("Mouse X");
var my = Input.GetAxis("Mouse Y");
if (my != 0)
{
var tmp = Mathf.Clamp(_currentYRotation + my * speedY * Time.deltaTime, -limitY, limitY);
if (tmp != _currentYRotation)
{
var rot = tmp - _currentYRotation;
transform.RotateAround(_position, transform.right, rot);
_currentYRotation = tmp;
}
}
if (mx != 0)
{
transform.RotateAround(_position, Vector3.up, mx * speedX * Time.deltaTime);
}
transform.position = _position; //Нужно как то сделать так, что бы камера была не в позиции объекта, а врощалась вокруг него
transform.LookAt(target.transform);
}
}
public class CameraFollow : MonoBehaviour
{
public float speedX = 360f;
public float speedY = 240f;
public float limitY = 40f;
private float _currentYRotation;
private GameObject target;
private Vector3 _position //для сокращения
{
get { return target.transform.position; }
set { target.transform.position = value; }
}
private void Start()
{
target = PlayerEntity.playerEntity[0]; //находим объект, к которому привяжем камеру
}
private void LateUpdate() //Скрипт камеры
{
var mx = Input.GetAxis("Mouse X");
var my = Input.GetAxis("Mouse Y");
if (my != 0)
{
var tmp = Mathf.Clamp(_currentYRotation + my * speedY * Time.deltaTime, -limitY, limitY);
if (tmp != _currentYRotation)
{
var rot = tmp - _currentYRotation;
transform.RotateAround(_position, transform.right, rot);
_currentYRotation = tmp;
}
}
if (mx != 0)
{
transform.RotateAround(_position, Vector3.up, mx * speedX * Time.deltaTime);
}
transform.position = _position; //Нужно как то сделать так, что бы камера была не в позиции объекта, а врощалась вокруг него
transform.LookAt(target.transform);
}
}