- Home /
Question by
SnakeEater · May 01, 2015 at 04:06 AM ·
c#raycast
C# Raycast shots not hitting targets (3D)
EDIT: NEVER MIND, FIGURED IT OUT, IT WAS AN ISSUE WITH MY bullethole PREFAB, SCRIPT WORKS FINE=)
Hopefully a simple question.
basically the shots that I fire do not land where the crosshair indicates (middle of the screen). Depending on my rotation they seem to miss by a small amount.
Even if I offset the crosshair to work in one direction It misses again when I face another direction. So how do I get them to hit the exact centre (or at least same spot on screen) every time?
This is the code I'm using. I tried the line commented out, and it produces similar results.
if you need any additional info just tell me, I'm sort of new to this whole coding thing =).
using UnityEngine;
using System.Collections;
public class BasicGun : MonoBehaviour {
public float range = 100.0f;
public float cooldown = 0.5f;
float cooldownRemaining = 0f;
public GameObject debrisPrefab;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update (){
cooldownRemaining -= Time.deltaTime;
if (Input.GetMouseButton (0) && cooldownRemaining <= 0) {
cooldownRemaining = cooldown;
// Ray ray = Camera.main.ScreenPointToRay(new Vector3(Screen.width * 0.5f,Screen.height * 0.5f, 0));
Ray ray = new Ray (Camera.main.transform.position,Camera.main.transform.forward);
RaycastHit hitInfo;
if (Physics.Raycast (ray, out hitInfo, range)) {
Vector3 hitPoint = hitInfo.point;
if (debrisPrefab != null) {
Instantiate (debrisPrefab, hitPoint, Quaternion.FromToRotation(Vector3.up, hitInfo.normal));
}
}
}
}
Comment