- Home /
Stopping gameobject with colliders
Hi I'm new and trying to stop ball when it hits the ground. But its not working. Here is my code can you help me
public class hız : MonoBehaviour
{
public float x_axis = 40f;
public float y_axis = 25f;
public Rigidbody kure1;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
if (Input.GetMouseButtonDown(0))
{
kure1.velocity = new Vector3(x_axis, y_axis, 0);
}
}
void OnCollisionEnter(Collision top)
{
if (top.gameObject.name == "duvar")
{
kure1.velocity = new Vector3(0, 0, 0);
}
}
}
top means = ball duvar means = wall
Answer by ilagef · Jul 17, 2020 at 11:32 AM
Is this a 3D game?
Try to check that both the ball and the wall has colider3D and rigidtbody3d.
And and add a condition to avoid the collision between the functions, since when you click you add a velocity, and when it touch the wall you change the velocity, on the same frame.
In addition the onCollisionEnter called only once, when the ball his the wall, While the Update called every frame.
Edit:
Try this:
void Update()
{
Vector3 direction = new Vector3(x_axis, y_axis, 0);
Vector3 ballSize = gameObject.GetComponent<Renderer>().bounds.size;
bool isTouching = Physics.Raycast(transform.position, direction, ballSize.x / 1.5f);
if (!isTouching && Input.GetMouseButtonDown(0))
{
rb.velocity = direction;
}
}
They both have colider3D and rigidtbody3d. sorry but i couldn't make it can you give a example
Try this:
public class hız : $$anonymous$$onoBehaviour
{
public float x_axis = 40f;
public float y_axis = 25f;
public Rigidbody kure1;
private bool isTouchingTheWall;
// Start is called before the first frame update
void Start()
{
isTouchingTheWall = false;
}
// Update is called once per frame
void Update()
{
if (!isTouchingTheWall && Input.Get$$anonymous$$ouseButtonDown(0))
{
kure1.velocity = new Vector3(x_axis, y_axis, 0);
}
}
void OnCollisionEnter(Collision top)
{
if (top.gameObject.name == "duvar")
{
isTouchingTheWall = true;
kure1.velocity = new Vector3(0, 0, 0);
}
}
}
i tryed but still my ball rolling when it hit the wall. appreciated for your answer
Your answer
Follow this Question
Related Questions
Stopping my player from moving when hitting a wall. 5 Answers
Why is the Rigidbody ignoring Colliders? 1 Answer
Problem with rigidbodys and box collider 1 Answer
Collider2D/RigidBody2D not working 1 Answer
Colliding with similar object 2 Answers