- Home /
reset rb.velocity = direction * speed; after collision
i'm trying to figure out how to reset rb.velocity = direction * speed with this script: as it stands my ball keeps getting faster and faster until the game resets
{
public AudioSource score;
public IEnumerator OnTriggerEnter2D (Collider2D Other)
{
if(Other.gameObject.tag == "Goal")
{
score.Play();
yield return new WaitForSeconds(1f);
transform.position = new Vector2 (0, 0);
}
}
}
Answer by SteenPetersen · May 23, 2020 at 11:39 PM
rb.velocity = vector3.zero
is that what you mean? I'm unclear on what you are asking for
you may also mean that you should have some sort of limit to what speed you can have?
[SerializeField] float maxSpeed = 1;
if(rb.velocity > maxSpeed )
rb.velocity = maxSpeed ;
in my game of pong my ball uses rb.velocity = direction * speed in my ball script to speed up the ball everytime the ball hits a paddle:
{ public Ball movement; public float speed; Vector2 direction; // (X,Y) public AudioSource paddleBleep; public AudioSource wallBleep;
Rigidbody2D rb;
// Start is called before the first frame update
void Start()
{
rb = GetComponent<Rigidbody2D>();
direction = Vector2.one.normalized;//(1,1)
}
public void FixedUpdate() // speed ball after each bounce
{
rb.velocity = direction * speed;
}
private void OnCollisionEnter2D(Collision2D collision) // wall collision code
{
if (collision.gameObject.CompareTag("Wall"))
{
direction.y = -direction.y;
wallBleep.Play();
}
else if (collision.gameObject.CompareTag("Paddle"))
{
speed += Random.Range(0.5f, 1.5f);
direction.x = -direction.x;
paddleBleep.Play();
}
}
}
the problem is after the ball hits the goal and resets it's position the speed of the ball doesn't with it and the ball infinitely faster, so i'm trying to find a way to reset the ball speed by adding it into my ball collision script:
{
public AudioSource score;
public IEnumerator OnTriggerEnter2D (Collider2D Other)
{
if(Other.gameObject.tag == "Goal")
{
score.Play();
yield return new WaitForSeconds(1f);
transform.position = new Vector2 (0, 0);
}
}
}
Your answer
Follow this Question
Related Questions
Troublesome collision detection when changing rigidbody.velocity directly 0 Answers
How to detect collision position and velocity? 2 Answers
Rigidbody2D.velocity out of controll 3 Answers
OnTriggerEnter2D acting like OnTriggerStay2D 0 Answers
Why does this script check for raycast collision? Is it necessary? 1 Answer