- Home /
Object Oscillation like a spring
EDIT: Solved. I was missing 'yield WaitForEndOfFrame' in the second while loop. However, if you would still like to look through my code and make suggestions on how to make it better, please be my guest. I don't mind learning :D
ORIGINAL: I'm trying to have an object fall from a high Y-value on the screen towards a target position (y = 0). Once it pases the y-axis, the object should follow the behavior of a spring - oscillating back and forth (above and below the target position) until its momentum is spent and ultimately stops at a resting point on the y-axis.
Problem is, I'm not so great with physics calculations (It's been ages since I studied Hooke's law lol). My code is included below. The problem is that once it reaches y = 0, the object basically stops suddenly. There is a slight bounce but I'd like it to be more noticeable.
Can anyone assist me with this task? Thanks in advance
var nFinalY = this.transform.position.y - GameData.nDropDistance;
var nAcceleration:int = -250;
var vFinalVector3 = this.transform.position - Vector3(0, -250, 0);
while(this.transform.position.y > nFinalY - 0)
{
this.transform.position.y += Time.deltaTime * nAcceleration;
yield WaitForEndOfFrame;
}
var fTime:float = 0.0;
var fSpringCoef = 20.0;
while(true)
{
transform.position.y = nFinalY + (Mathf.Sin(fTime) * fSpringCoef);
fSpringCoef -= 2 * Time.deltaTime;
fTime += Time.deltaTime;
if(Mathf.Abs(transform.position.y - nFinalY) < 1 && fSpringCoef < 2)
break;
}
Your answer
Follow this Question
Related Questions
How could I achieve Active Ragdoll effect like Overgrowth in Unity? 0 Answers
2D 360 degress platformer example needed 0 Answers
Can i make it? 1 Answer
How do I make a custom sliding joint? 0 Answers
Increase force of JointSpring? 0 Answers