Ok, this one is more of an opinion question. In my game the character has guns, but I’m not sure whether or not I should make the bullets visible. It’s a third person shooter, and if I have the bullets invisible it’s kinda hard to tell where you’re aiming. But if I have them visible, that isn’t very realistic (if you fired a gun in real life you wouldn’t be able to see the bullet). I have a gun flash thing I put in there and the gun recoils so you know you’re shooting it, but it’s still kinda strange looking. I tried adding a laser aiming feature, but for some reason it looked like the laser was pointing up instead of straight ahead. I’m thinking that might have something to do with the camera angle, which points slightly down, though that is how I wanted it to look. Does anyone have any examples or any suggestions?
Depending on how you made your laser, it may have been a perfect line, meaning that it would have no width. If this was the case, there would have been no sense of depth. If you use a laser that is an actual object, for instance a three-sided cylinder, it should look better. If you use a targeting dot, then you will be able to see where you are aiming. There are certain types of bullets, called tracers, that are visible, but they are used mostly for aerial combat. However, you could say that the guns were shooting tracers.
Targeting dot, that sounds like what I’m looking for. Do you know how to make one of those?
This was what I used for the laser:
from Rasterizer import drawLine
from Mathutils import Matrix, Vector
import GameLogic as GL
cont = GL.getCurrentController()
own = cont.owner
ray_sensor = cont.sensors[“ray”]
ray_vec = Vector(ray_sensor.rayDirection)
ray_vec.magnitude = ray_sensor.range
pos_vec = Vector(own.worldPosition)
hit_vec = Vector(ray_sensor.hitPosition)
ray_vec = hit_vec - pos_vec
drawLine(pos_vec, pos_vec + ray_vec, [255, 0, 0])
I don’t know Python, really, so what you said makes no sense to me. Well, actually, I kind of get the basic idea, looking at it. Your problem is that as I understand it, the drawLine function makes a one-dimensional line. That means it has no width. As a result, perspective cannot be seen, making it look like it goes up. You should use add object with a laser mesh of some sort parented to the gun. You would have to deal with making it stop when it hit something, but you could stretch it for that or just have the gun shoot multiple shorter objects continuously. As long as they moved only forward in relation to the gun, the laser would probably look right. However, you can make a simple targeting dot by using Overlay Scene. You make another scene and put a mesh that looks like whatever you want your targeting dot to look like in front of the camera view, then in your main scene, use an always sensor with an “and” controller connected to a scene actuator set to overlay scene. Simply put the name of the other scene in the box.