2015-08-31 9 views
1

Итак, у меня есть ракета (плеер), которая летит по оси Y. У меня есть камера с этим сценарием, следующим за ракетой:Остановить камеру от перемещения по оси x

using UnityEngine; 
using System.Collections; 

public class CameraController : MonoBehaviour 
{ 
public GameObject player; 
private Vector3 offset; 

// Use this for initialization 
void Start() 
{ 
    offset = transform.position; 
} 



// Update is called once per frame 
void LateUpdate() 
{ 
    transform.position = player.transform.position + offset; 
} 
} 

Как остановить камеру от перемещения по оси х? Я только хочу, чтобы он следовал за ракетой вверх по оси Y. Я попытался добавить жесткое тело и заблокировать ось X, но это не сработало. Любые идеи, как это сделать в скрипте? Спасибо!

P.S. Я новичок в написании сценариев, пожалуйста, расскажите мне, как реализовать дополнительный код.

ответ

0

Ну, простой способ заблокировать вашу камеру в только одной оси будет изменить код, представленные выше, к этому:

using UnityEngine; 
using System.Collections; 

public class CameraController : MonoBehaviour 
{ 
public GameObject player; 
private Vector3 offset; 

// Use this for initialization 
void Start() 
{ 
    offset = transform.position; 
} 



// Update is called once per frame 
void LateUpdate() 
{ 
    transform.position = new Vector(
    offset.x, player.transform.position.y + offset.y, 
    offset.z); 
} 
} 

Это должно сделать камеру идти только вверх/вниз вместе с ракетой , но не двигаться ни по оси x, ни по оси z. Если это не совсем то, чего вы пытались достичь, оставьте комментарий, и я посмотрю

+0

Отлично, это работает! Нашел ошибку в вашем коде, в последних 5 строках вы написали новый вектор. Вам нужен новый Vector3 в Unity: P Спасибо! –

0

RigidBody не поможет вам, потому что блокировка оси в RigidBody игнорирует движение, которое вызывается физикой Unity, вы может использовать AddForce, если вы хотите обработать его RigidBody, но не нужно делать все это. Самый простой способ, это просто переопределить X значение, как это:

Vector3 newPosition = player.transform.position + offset; 
newPosition.x = 0; 
transform.position = newPosition; 

Это вычисляет новое положение, а затем просто устанавливает X до нуля (или любое другое значение, которое вы хотите), а затем устанавливает, что вектор в качестве позиции.