2014-06-06 3 views
0

Это мой сценарий (написанный на JavaScript), который создает движение камеры. Я не могу понять, как сделать так, чтобы я мог заставить его не двигаться слишком близко к объекту (цели). Наверное, это что-то простое, но я ничто в Unity.Остановка моей камеры от доступа к закрытию

Если это невозможно получить, изменив существующий код, не могли бы вы предложить другой способ получить желаемое движение?

#pragma strict 
var target : Transform; 
var localOffset = Vector3(0,0,0); 
var finalPos : Vector3; 
var currentPos : Vector3; 
var speed = 0.01; 
private var startTime: float; 
private var journeyLength: float; 

function Start() { 
    startTime = Time.time; 
} 

function Update() { 
    currentPos = transform.position; 
    finalPos = target.position + (target.up * localOffset.z); 
    finalPos = target.position + (target.forward * localOffset.x); 
    transform.LookAt(target.position); 

    journeyLength = Vector3.Distance(transform.position, finalPos); 
    var distCovered = (Time.time - startTime) * speed; 
    var fracJourney = distCovered/journeyLength; 

    transform.position = Vector3.Lerp(transform.position, finalPos, fracJourney); 
} 
+0

Может искать способ зажима Unity ... Это может быть то, что вы после – Savlon

+0

это не JavaScript, это unityscript – LearnCocos2D

ответ

1

Я хотел бы использовать Vector3.Distance

function Update() 
{ 

... 

if (Vector3.Distance(target.position, transform.position) > 10) // Change '10' to any distance that you want as a minimum 
{ 
    transform.position = Vector3.Lerp(transform.position, finalPos, fracJourney); 
} 

Надеется, что это помогает :)

1

Там небольшая ошибка в коде, если заменить:

finalPos = target.position + (target.up * localOffset.z); 
finalPos = target.position + (target.forward * localOffset.x); 

с:

finalPos = target.position + (target.up * localOffset.z); 
finalPos += (target.forward * localOffset.x); 

вы получите то, что вы хотите?

Смежные вопросы