# Rigidbody of empty bullet shell collision problem.

 0 Hi, Im quite new to unity (started about a month ago) and Ive been working on a mock up of a FPS using unity primitives to help me learn the ropes before I go into anything major. So far Ive created some basic movement controls and a pistol that shoots bullets. The problem Im having is that when the gun fires the bullets I also made it eject a small cube with a rigid body component to represent an empty shell, but for some reason the shell passes through the floor (a flat plane with a mesh collider). This person http://answers.unity3d.com/questions/2666/rigidbody-sphere-falls-through-collider-plane sounds like they had a similar problem, but if I scale cube that represents the shell to 1,1,1 it works but makes it half the size of the character and if I scale everything else to match it causes everything to run very slowly. Another problem Im having is that if the character is moving while he shots it adds way too much force onto the rigid body causing it to behave oddly. For example, the shell flies out the left side of the gun after I instantiate it (Rigidbody. velocity = transform. TransformDirection(Vector3 (-1,0,0)); ) to simulate the force of the ejection. But if Im strafing left at the time it sort of cancels out the initial force of the shell causing it to fall through the gun or appear to fly right. Im really sorry if this doesnt make much sense, I have dyslexia so I find stuff like this exceptionally difficult. Is there any way I can make this work or should I give up on it? more ▼ asked Feb 19 '10 at 01:34 PM Guildenstern 3 ● 1 ● 2 ● 2 Hears an image of the game, dont know if this helps it make any more sense. http://tinypic.com/view.php?pic=np2vpz&s=6 Feb 19 '10 at 01:34 PM Guildenstern add new comment (comments are locked) 10|3000 characters needed characters left ▼ Viewable by all users

 0 The reason you shell is falling through the floor is probably that it is too small to detect the collision. In one frame it's fully above the floor, in the next frame it's fully below the floor, it never touches it. We are working on adding features to solve this in an easy way, but for now, you'll have to work around this. You could manually check for collisions, by storing the position of the bullet each frame in a script, and then do a Raycast from the old position to the new one, to see if it passed through anything on it's way. more ▼ answered Feb 19 '10 at 04:25 PM jonas echterhoff ♦♦ 9.8k ● 7 ● 23 ● 104 Thanks I will give that a try! Feb 20 '10 at 12:19 PM Guildenstern add new comment (comments are locked) 10|3000 characters needed characters left ▼ Viewable by all users
 0 About your question #2: You need to set ignore collisions between your gun shells and your character. The easiest way to do that is: First set the tag and layer of your gun, character and bullet shells to be tha same, i.e "Player". Use this script when you are moving, shooting or using anything that is detecting collisions. Look at this example: void Start() { ``````// Add objects's own layer to mask mask = 1 << gameObject.layer; // Add Igbore Raycast layer to mask mask |= 1 << LayerMask.NameToLayer("Ignore Raycast"); // Invert mask mask = ~mask; `````` } ! Hope that helps! more ▼ answered Jul 03 '10 at 10:29 PM Tuti 410 ● 1 ● 3 ● 9 add new comment (comments are locked) 10|3000 characters needed characters left ▼ Viewable by all users

By Email:

Topics:

x2584
x1862
x461
x320
x8

asked: Feb 19 '10 at 01:34 PM

Seen: 2399 times

Last Updated: Feb 19 '10 at 01:34 PM