Question by
Misthra-Games · May 07, 2016 at 12:03 AM ·
c#raycastraycastingraycasthitray
Raycast doesn't stay in one place
Someone please help, my ray keeps moving all over the place and it carries over into the build mode. I don't know how to make it stop. Please help. You can see that its originating from my camera and it does this no matter what its attached to. Please help.
using UnityEngine;
using System.Collections;
public class crosshair : MonoBehaviour {
private GameObject pO;
private GameObject pC;
private Player pS;
public MasterScript mS;
public bool semiAuto = true;
public bool automatic = false;
public float fireRate;
public float cooldown;
private int ammoOfCurGun;
private int EAmmoOfCurGun;
public AudioClip gunSound;
AudioSource _audio;
// Use this for initialization
void Start () {
pO = GameObject.Find ("Player");
pS = pO.GetComponent<Player> ();
pC = GameObject.Find ("playerCamera");
_audio = gameObject.GetComponent<AudioSource> ();
}
public void setAmmo(int gunAmmo) {
ammoOfCurGun = gunAmmo;
}
public int getAmmo() {
return ammoOfCurGun;
}
public void setEAmmo(int E_Ammo) {
EAmmoOfCurGun = E_Ammo;
}
public int getEAmmo() {
return EAmmoOfCurGun;
}
public void CheckIfFiring () {
RaycastHit hit;
Ray bulletPath = new Ray (pC.transform.position, pC.transform.forward);
Debug.DrawRay (pC.transform.position, pC.transform.forward* 10);
if (ammoOfCurGun != 0) {
if (semiAuto && cooldown >= fireRate) {
if (Input.GetButtonDown ("Fire1")) {
_audio.PlayOneShot (gunSound, 0.7f);
cooldown = 0;
if (Physics.Raycast (bulletPath, out hit, 1000)) {
if (hit.collider.tag == "Enemy") {
Enemy enemy = hit.collider.GetComponent<Enemy> ();
enemy.damageZombie (pS.getDamage ());
mS.addPoints (10);
}
}
}
}
if (automatic && cooldown >= fireRate) {
if (Input.GetButton ("Fire1")) {
_audio.PlayOneShot (gunSound, 0.7f);
cooldown = 0;
if (Physics.Raycast (bulletPath, out hit, 1000)) {
if (hit.collider.tag == "Enemy") {
Enemy enemy = hit.collider.GetComponent<Enemy> ();
enemy.damageZombie (pS.getDamage ());
mS.addPoints (10);
}
}
}
}
}
}
void FixedUpdate() {
if (cooldown < fireRate) {
cooldown += 1f;
}
}
// Update is called once per frame
void Update () {
getAmmo ();
}
}
raytwo.png
(191.5 kB)
rayone.png
(206.2 kB)
Comment
Your answer
Follow this Question
Related Questions
Raycasting problem, colliders not being recognized? 1 Answer
Physics.Raycast Not Working... Kinda 0 Answers
Accessing Raycast collider from another script 0 Answers
NullReferenceException while raycasting? 0 Answers
Raycast direction change problem 0 Answers