- Home /
Bug, while checking if rigidbody is moving
I have a Camera, that has a controller attached, that controls my game objects, that can be shot.
if (isFired)
{
if (target.rigidbody.velocity != inPlaceVector)
{
isFired = true;
}
else
{
isFired = false;
}
}
FYI:
`inPlaceVector = new Vector3(0, 0, 0);`
I shoot the object with:
Vector3 forceDirection = mainCamera.transform.forward;
forceDirection = new Vector3( forceDirection.x, 0, forceDirection.z );
target.rigidbody.AddForce( forceDirection.normalized * currentPower * initialPower);
isFired = true;
Both of these script snippets are excerpts from multiple parts of `Update()`, but I think the problem relies in here due to `Vector3 ==` doing only approximate comparison.
The problem is that if I try to shoot the puck right after I've already shot it (what I think happens from the loose comparison, when the `velocity` vector is really close to `inPlaceVector`), I trigger yet another Shoot event, that messes up the actual shot.
I have tried with `target.rigidbody.velocity.magnitude > 0` and also `target.rigidbody.isSleeping()` to no avail. While each of the checks end up in a different behavior for collisions, the bug remains, if I manage to squeeze a shooting attempt between the loose comparison, I trigger yet another shot.
How do I overcome this?
Your answer
Follow this Question
Related Questions
How do I move this rigidbody? 1 Answer
Question regarding Ridigbody2D.velocity.magnitude 1 Answer
Ball moving in a tube 0 Answers
Rigidbody is Pushing Another Rigidbody : Unity 1 Answer
Issue with velocity movement script 1 Answer