How can I reset speed?
I want to reset the ball speed to its original state, because everytime it touches a trigger it gains 1.2 speed, but I'm not being able to reset the ball to its original speed.
My code is like this so far:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Bola : MonoBehaviour
{
public float speed = 2.0f;
public float maxSpeed = 10.0f;
private Rigidbody2D rb;
private Vector3 startPosition;
public float difficultyMultiplier = 1.2f;
private AudioSource audioSource;
private float x;
private float y;
void Start()
{
rb = GetComponent<Rigidbody2D>();
startPosition = transform.position;
Launch();
audioSource = GetComponent<AudioSource>();
}
void Update()
{
if (this.transform.position.x >= 9f)
{
this.transform.position = new Vector3(0f, 0f, 0f);
}
if (this.transform.position.x <= -9f)
{
this.transform.position = new Vector3(0f, 0f, 0f);
}
}
private void Launch()
{
if (Random.Range(0, 2) == 0)
{
x = -1;
}
else
{
x = 1;
}
if (Random.Range(0, 2) == 0)
{
y = -1;
}
else
{
y = 1;
}
rb.velocity = new Vector2(speed * x, speed * y);
}
private void OnCollisionEnter2D(Collision2D collider)
{
audioSource.Play();
}
public void Reset()
{
transform.position = startPosition;
Launch();
}
private void OnTriggerEnter2D(Collider2D collision)
{
if (collision.gameObject.tag == "Raquete")
{
if (difficultyMultiplier * speed < maxSpeed)
{
speed *= difficultyMultiplier;
rb.velocity *= difficultyMultiplier;
}
}
}
}
If anyone could help me, I would be very grateful!
Answer by tylerdtrudeau · Mar 05, 2021 at 07:05 PM
I think this is happening because youre using the "speed" variable at the start (2f) then launching your ball with speed which is 2, ontriggerenter triggers a few times and speed is multiplied by 1.2 each time, then you reset and launch all again. BUT it is now launching with the MODIFIED speed variable because you never set speed back to 2. So add a variable at the start of the class called something like "float startSpeed = 2f;" then make your speed variable blank "float speed;" then in the Launch method right at the very top do "speed = startSpeed;" and that should solve the issue by resetting speed back to startspeed (2) every time you launch.
Amazing!!!!!
Thank you, it worked like a charm!!!
Your answer
![](https://koobas.hobune.stream/wayback/20220613030245im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
How to revert speed back to normal after changing with Key. 1 Answer
Something is wrong with my max. speed code 0 Answers
Increase variable? 0 Answers
[SOLVED] When touch and drag objects fast (in android), leave dragging. 1 Answer
Need help, the speed stacks if I press left/up, right/up, left/down or right/down. 1 Answer