- Home /
Bullet behaves strangely - TimeStep problem?
Hey guys,
I know this was often mentioned as a problem and I think I just read every thread about it, but nothing actually helped.
I have got a bullet prefab which gets fired by script:
public void Shoot () {
GameObject instantiatedProjectile = Instantiate(Projectile, FirePoint.transform.position, FirePoint.transform.rotation) as GameObject;
instantiatedProjectile.GetComponent<Rigidbody>().AddForce (transform.forward * 1000);
}
The Bullet itself just checks what it is hitting:
void OnCollisionEnter(Collision collision) {
ContactPoint contact = collision.contacts[0];
Quaternion rot = Quaternion.FromToRotation(Vector3.up, contact.normal);
Vector3 pos = contact.point;
if (collision.gameObject.tag == "Enemy")
{
//
}
}
if (collision.gameObject.tag == "Concrete")
{
//
}
Destroy(gameObject);
}
Now, here comes the problem. I used this script on my players gameObject and it works perfectly. But on my enemys Object, the bullet shoots somewhere in the left-opposite direction, but everytime somewhere else. It looks like the bullet also spawns somewhere left-behind the character.
It became more strange when I set the timescale to .5 to observe the spawn of the bullet and suddenly it was placed and shot right (Most times but sometimes it still bugs around). You propably think know, that some collider is changing the movement of the bullet, but there is nothing close to the spawn point.
Whats perhaps important, is that the spawnpoint is child of an animated mecanim character. (It stands still in the moment of shooting)
What I tried:
-Setting the collision detection of the Bullet to continuouse dynamic
-Setting the time scale to .001
-Set the Bullet collider to a 3,3,3 cube (Larger would be too unprecise)
Is anyone out there willing to help? Would be much appreciated!
Answer by alok-kr-029 · Jul 10, 2015 at 04:39 AM
if you are changing the timescale to less than one every thing will become slower you dont need to change the timescale to spawn the bullet at correct place.
if you want to instantiate the bullet at correct point why dont you just update the firepoint .
I would suggest you use addrelativeForce in place of addforce
I tried what you suggested, but still exactly the same problem.
I thought that it is strange, that I have got the same script on two Objects and it behaves that differently.
I further thought, that it could then be related to how I animate the Enemy Object, because thats the only thing that is different.
Still it bugs me, that it actually works in Slow$$anonymous$$o $$anonymous$$ode...