- Home /
Lerp and recording Transforms/Vector3
Hey I have two scripts on objects so that when I click on them the Camera Zooms in (in Slow Mo) and then when I click on another object it Zooms out in slow mo. It works BUT...
1) I am only able to do this ONCE each time and no more? Weird right?
2) my startPos & endPos are distinct Vector 3's I must program by hand each time I use the script Since I have a FCP as the startPos of my ZoomIn script (and the endPos of my ZoomOut script) and a Plane as the endPos of my ZoomIn script (and the startPos of my ZoomOut script) can't I just be passing variables for this?
ie: how to make a thing's Transform > a Vector3? and pass it as variable so the Camera can go back to the same point it left when the mouse clicked?
Here is my Zoom in:
var startPos: Vector3;
var endPos: Vector3;
var time : float;
function OnMouseDown () {
var i = 0.0;
var rate = 1.0/time;
while (i < 1.0) {
i += Time.deltaTime * rate;
Camera.main.transform.position = Vector3.Lerp(startPos, endPos, i);
yield;
}
} Zoom out is reverse:
var startPos: Vector3;
var endPos: Vector3;
var time : float;
function OnMouseDown () {
var i = 0.0;
var rate = 1.0/time;
while (i < 1.0) {
i += Time.deltaTime * rate;
Camera.main.transform.position = Vector3.Lerp(endPos, startPos, i);
yield;
}
}
Thanks for your help
Answer by Bentoon · Mar 19, 2014 at 05:15 AM
Works now: Zoom In:
var target: Transform;
var camPos: Vector3;
var endPos: Vector3;
var time : float;
function OnMouseDown () {
camPos = Vector3( Camera.main.transform.position.x, Camera.main.transform.position.y, Camera.main.transform.position.z);
endPos = Vector3( target.transform.position.x, target.transform.position.y, target.transform.position.z);
var i = 0.0;
var rate = 1.0/time;
while (i < 1.0) {
i += Time.deltaTime * rate;
Camera.main.transform.position = Vector3.Lerp(camPos, endPos, i);
yield;
}
}
Zoom Out:
var camPos: Vector3;
var endPos: Vector3;
var time : float;
function OnMouseDown () {
endPos = Vector3( Camera.main.transform.position.x, Camera.main.transform.position.y, Camera.main.transform.position.z);
var i = 0.0;
var rate = 1.0/time;
while (i < 1.0) {
i += Time.deltaTime * rate;
Camera.main.transform.position = Vector3.Lerp( endPos, camPos, i);
yield;
}
}
Your answer
Follow this Question
Related Questions
Lerping Field Of View is buggy 1 Answer
Randomly Transition Camera Background Color? 2 Answers
How to lerp between cameras on a UI button click? 2 Answers
How do I translate around a circle? 3 Answers
Zooming camera using move z position. 0 Answers