这是我的脚本(用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 :(得分: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);
你会得到你想要的吗?
答案 1 :(得分: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);
}
希望这会有所帮助:)