- Home /
Rotation is coming back way higher than random maximum
I can't word the title for this properly, but I have a great example. I am programming a shotgun for an fps game and whilst aiming straight down it is possible to miss the ground on a floating platform many times larger than the player.
Basically, I'm creating 8 raycasts, one of them perfectly accurate, and the other 7 randomly generated. They originate from the place the camera is, and the direction the ray fires in is the camera's rotation + the randomly generated offset. The offset below is only about 2.4 degrees, and there are 8 total projectiles, but they don't seem to be going anywhere near the spot they're supposed to be going.
What am I doing wrong? Edit: From the looks of things it seems that the rotation it's firing at is only the camera direction, and not what I added to it. I think when I made the shotgunAngle change and then not use the camera angle originally it gave me some sort of weird error.
void fireCombatShotgun()
{
//create array of values, transform.forward + value. iterate through a loop for this.
if (Physics.Raycast(Camera.main.transform.position, Camera.main.transform.forward, out RaycastHit shotgunHit, 100f))
{
print(shotgunHit.distance);
}
for(int i = 0; i < 7; i++)
{
Vector3 shotgunAngle;
shotgunAngle = Camera.main.transform.forward;
shotgunAngle.x = shotgunAngle.x + Random.Range(0f, 2.4f);
shotgunAngle.y = shotgunAngle.y + Random.Range(0f, 2.4f);
if (Physics.Raycast(Camera.main.transform.position, shotgunAngle, out shotgunHit, 1000f))
{
print(shotgunHit.distance);
}
}
//create 7 rays at origin, each having one of those x,y transform.rotaton values added to them.
}
Your answer
