Question by
SuperRaed · Mar 25, 2016 at 02:49 PM ·
physics2dcollider2d
how to make force inversely proportional to the distance
I'm trying to add some realism to a game I'm making by having objects closer to a pushing power source experience a greater power and as they get further and further away the magnitude of that force becomes less and less so far my implementation is as following:
void Update () {
if (Input.GetKeyDown(KeyCode.A)) {
paddle(left.position);
}
if (Input.GetKeyDown(KeyCode.L)) {
paddle(right.position);
}
}
private void paddle(Vector2 paddlePosition) {
Collider2D[] cubes = Physics2D.OverlapCircleAll(paddlePosition, radius);
//get all objects within influnce range
foreach (Collider2D cube in cubes) {
Rigidbody2D rigid = cube.gameObject.GetComponent<Rigidbody2D>();
Vector2 cubePosition = cube.gameObject.transform.position;
Vector2 difference = (cubePosition - paddlePosition);
//determine the direction of the force to be added
distance = difference.SqrMagnitude();
strength /= distance;
difference.Normalize();
rigid.AddForce(new Vector2(difference.x *strength,difference.y*strength));
rigid.AddTorque(torque);
}
}
but the results are not what I'm expecting
Comment
Your answer
Follow this Question
Related Questions
OverlapBox not working as expected 0 Answers
OverlapCircle not working correctly 0 Answers
2D Physics not working correctly 1 Answer
Physics without rigid body- bouncing effect to collider on hit 0 Answers
A box collider 2D (Is Trigger marked) stops my player from moving which has rigidbody 2D 1 Answer