- Home /
Unet FPS : How to make player not shoot itself ?
I'm doing a unet fps game, but stumbled upon this very fundamental problem which i could not find a solution to, or an acceptable one at least.
The question is how do I prevent the player from shooting itself? It may sound simple, but not quite...
I have made it so that if you're the local player, the layer "Not Shootable" is assigned to your own player model (which contains colliders to detect shooting collisions). else if its not the local player, "Default" layer is assigned to the player model. When raycasting, a layer mask is passed into the function, which includes "Default" and excludes "Not Shootable", therefore whichever game object that has "Not Shootable" layer will be ignored by the raycast.
The problems come when I do the raycasting for shooting in the server, which doesn't work well with the unet's 'host is both a client and server' architecture. Because when changing the layer mask for the host player locally, the server is affected too since they exist in the same instance. So when I'm raycasting at the server, the layer masks are following the host player's configuration, no matter which player is doing the shooting. This result is : all remote clients to be able to shoot themselves but not the host; And the host is not able to shoot itself, but can still shoot other remote clients (this is the desired behaviour).
A very hacky solution is to assign "Not Shootable" layer to the model of the player that is shooting before the raycast. Then after the raycast assign it back to "Default" layer. But this is very expensive because for every shot, the entire model hierarchy has to be iterated through twice.
Please help me out here, thanks in advance.
Answer by RiQQ92 · Aug 26, 2017 at 01:04 PM
You could make the raycast start point bit further so it wont start inside the collider. If this is not acceptable, you might be able to do it with 'RaycastAll' and look that the shooter didnt hit itself.
Your answer
Follow this Question
Related Questions
my game isnt taking damage when a raycast hits? 1 Answer
Shoot Projectile Where Camera Faces [PLEASE HELP!] 2 Answers
Network.sendRate = 50; is that bad? 0 Answers
MLAPI error with two instances of networked object 0 Answers
Why when I make a Networking first person game it controls the other person? 1 Answer