this is a work in progress but has
Reloading with a bullet stockpile
Raycast bullets
Gunswing
zoom
Left click=fire
Right click =zoom
R=reload
Wsad=move
mouselook soon.
Attachments
FPSSetupX2.blend (690 KB)
this is a work in progress but has
Reloading with a bullet stockpile
Raycast bullets
Gunswing
zoom
Left click=fire
Right click =zoom
R=reload
Wsad=move
mouselook soon.
FPSSetupX2.blend (690 KB)
remarks:
-thats a lot of properties running on the side there :p, makes it look quite heavy to run.
-Ray cast bullets are sorta cool, but you can’t really see where the bullet is going, using a Ray cast on the bullet itself lets you see where it is going and allows you to still add bulletholes/sparks etc.
-zooming takes a bit long, and you get a little too close to the front of the gun.
extra additions:
-you could possibly add some rigged hands? without too many physics calculations, that would make the gun sway more obvious and make it look more awesome!
-increase the speed of the sway so its just offset by one or 1/2 of a second!
Looks cool otherwise
It uses .10 ms of logic on my pc. All of those values are for debugging, and you can grab bullets and stock for the UI,
I can rig the hands, and speed up zoom, just grab the logic that is
If zoom min:0 max:99-------and-------add 1
And change it to
Zoom min:0 max:98-------and-------add 2 to Zoom
This will double the zoom speed,
The hands rotate using a property and python to apply the property, so you can just adjust the application or the rotation, for the gun rotation lag. You can adjust the logic that manupulates the property rot, or you can adjust the python in the empty the gun is parented to,
The red line drawn when shooting is just for debugging,
There is a “poof” added where the bullet hits, but a bullet hole that aligns its axis to face normal would look better, also a static ghost bullet that deletes itself if its further away then the sens.hitPos would make the bullet strike look convincing and would also be able to run each frame if ownGetDistanceTo(Player)>hitPointDistanceFromPlayer = endObject , add bullet hole.