Sooooooooooooooooooooooooooooooooooo.
We want to make a simple Zelda like obstacle. A platform will turn 180 degrees (flip over) every 3 seconds. A nice little obstacle to place over lava or a tank filled with sharks =3
You want to make a nice platform for your player to be flipped off of. I just made mine a cube with the dimensions (5, 0.3, 5).
Make a new java script and put this in it:
private var tCycle:float;
function Update(){
var t = Time.time;
if (t>tCycle){
tCycle = t+3;
if (transform.localEulerAngles.z<90) {
transform.localEulerAngles.z = 0;
} else {
transform.localEulerAngles.z = 180;
}
}
}
EXPLAINING TIME ^.^
private var tCycle is a float, which means the number will go into decimals. Read more about them here.
var t = Time.time;
Time.time is the time of the game since it has started. Read more here.
if (tCycle-t<=1)
transform.Rotate(0,0,180*Time.deltaTime);
if tCycle (which at the beginning is automatically 0) minus the time that is passed is less than or equal to one, then the platform will rotate 180 degree's per second (Time.deltaTime). The reason we have the if statement less than 1, is to give the platform to rotate a whole second to rotate.
if (t>tCycle)
tCycle = t+3;
If time passed is greater than tCycle, set the tCycle equal to time that's passed +3, this acts as kind of resetting the script.
We want to make a simple Zelda like obstacle. A platform will turn 180 degrees (flip over) every 3 seconds. A nice little obstacle to place over lava or a tank filled with sharks =3
You want to make a nice platform for your player to be flipped off of. I just made mine a cube with the dimensions (5, 0.3, 5).
Make a new java script and put this in it:
private var tCycle:float;
function Update(){
var t = Time.time;
if (tCycle-t<=1){
transform.Rotate(0,0,180*Time.deltaTime);
}
if (t>tCycle){
tCycle = t+3;
if (transform.localEulerAngles.z<90) {
transform.localEulerAngles.z = 0;
} else {
transform.localEulerAngles.z = 180;
}
}
}
EXPLAINING TIME ^.^
private var tCycle is a float, which means the number will go into decimals. Read more about them here.
var t = Time.time;
Time.time is the time of the game since it has started. Read more here.
if (tCycle-t<=1)
transform.Rotate(0,0,180*Time.deltaTime);
if tCycle (which at the beginning is automatically 0) minus the time that is passed is less than or equal to one, then the platform will rotate 180 degree's per second (Time.deltaTime). The reason we have the if statement less than 1, is to give the platform to rotate a whole second to rotate.
if (t>tCycle)
tCycle = t+3;
If time passed is greater than tCycle, set the tCycle equal to time that's passed +3, this acts as kind of resetting the script.
if (transform.localEulerAngles.z<90)
transform.localEulerAngles.z = 0;
else
transform.localEulerAngles.z = 180;
If the absolute local angle of the z axis is less than 90 degrees, then set the rotation to 0. If the rotation is greater than 0, then set the angles to 180. We do this because eventually the object would start to drift and not turn perfectly. Doing this resets the rotation to a perfect 0 or 180 each time, giving our platform a perfect flip. Read more about local Euler angles here.
Comment about any questions you have or problems you ran into. Special thanks to Aldo Naletto, for helping me figure this out.
Comments
Post a Comment