hi, so im a beginner developer and i would like to know how can i make a balloon move upwards from the start to the end, but when you click it on the ballon he moves a little bit down, like the flap bird physics but instead of going down he goes upwards because its a balloon…
I would try:
bool _mouseOver;
void Update() {
if(Input.GetMouseButtonDown(0) && _mouseOver)
GetComponent<Rigidbody>().gravityMultiplier *= -1;
}
void OnMouseOver() {
_mouseOver = true;
}
void OnMouseExit() {
_mouseOver = false;
}
If you want to do a sort of inverted flappy bird, then you can either use a Rigidbody, invert the gravity constant and use Rigidbody.AddForce whenever you click, or you can create your own simplified version of physics.
The first approach:
Rigidbody rb;
float forceMultiplier = 10;
void Start()
{
rb = GetComponent<Rigidbody>();
Physics.gravity = new Vector3(0, 9.81f, 0);
}
void Update()
{
if(Input.GetMouseButtonDown(0)) AddForce(Vector3.down * forceMultiplier);
}
In this case, you need to change forceMultiplier so it matches the mass of your rigidbody. The second approach:
float currentDirection = 1;
float accelerationMultiplier = 0.025f;
void Update()
{
currentDirection = Mathf.Clamp(currentDirection + Time.deltaTime * accelerationMultiplier, -1, 1);
if(Input.GetMouseButtonDown(0)) currentDirection = -1;
transform.Translate(Vector3.up * currentDirection);
}
This code will give you instantaneous direction change. If you want to give currentDirection some time to reach -1, you will need to change it a bit. Also you may need to change accelerationMultiplier. Reinventing the wheel is not considered a good practice, but you can learn a lot of things.
thank you all it helps alot xD