- Home /
I followed this youtube video on how to make a gun in unity but I think I messed up and now I can't see the ray, its there though and its working. Can someone help me make it visible?
this is my code, how do i make it so I can see the ray and I have made a enemy script which i checked and was correct.
using System.Collections; using UnityEngine;
public class GunScript : MonoBehaviour { public Transform barrel; public float range = 0f;
public float delay = 0f;
bool fired;
bool isAuto;
public KeyCode switchFireMode;
void Update()
{
if (Input.GetButton("Fire1") && !fired && isAuto)
{
fired = true;
StartCoroutine("FireAuto");
}
if (Input.GetButtonDown("Fire1") && !fired && !isAuto)
{
fired = true;
StartCoroutine("FireSemi");
}
if(Input.GetKeyDown(switchFireMode))
{
if(!isAuto)
{
isAuto = true;
}
else
{
isAuto = false;
}
}
}
IEnumerator Fire()
{
RaycastHit hit;
Ray ray = new Ray(barrel.position, transform.forward);
if (Physics.Raycast(ray, out hit, range))
{
if (hit.collider.tag == "Enemy")
{
Enemy enemy = hit.collider.GetComponent<Enemy>();
enemy.health -= 1;
}
}
Debug.DrawRay(barrel.position, transform.forward * range, Color.red);
yield return new WaitForSeconds(delay);
fired = false;
}
IEnumerator FireSemi()
{
RaycastHit hit;
Ray ray = new Ray(barrel.position, transform.forward);
if (Physics.Raycast(ray, out hit, range))
{
if (hit.collider.tag == "Enemy")
{
Enemy enemy = hit.collider.GetComponent<Enemy>();
enemy.health -= 1;
}
}
Debug.DrawRay(barrel.position, transform.forward * range, Color.green);
yield return null;
fired = false;
Debug.Log("we made it here");
}
}
Answer by KoenigX3 · May 24, 2020 at 04:19 PM
From Unity Docs:
public static void DrawRay(Vector3 start, Vector3 dir, Color color = Color.white, float duration = 0.0f, bool depthTest = true);
The duration parameter determines how long the line will be visible after the frame it is drawn. If duration is 0 (the default) then the line is rendered 1 frame. Since you did not specify the durations, the problem lies there. Use this if you want to display it for 10 seconds.
Debug.DrawRay(barrel.position, transform.forward * range, Color.green, 10);
Your answer
Follow this Question
Related Questions
How to find connected mesh triangles? 2 Answers
Enemy and gun damge script not working. 2 Answers
shooting raycast 1 Answer
script problem even though i have no errors 2 Answers
scripting problem 0 Answers