void Update() { // Check if the player has pressed the fire button and if enough time has elapsed since they last fired if (Input.GetButtonDown("Fire1") && Time.time > nextFire) { // Update the time when our player can fire next nextFire = Time.time + fireRate; // Start our ShotEffect coroutine to turn our laser line on and off StartCoroutine(ShotEffect()); // Create a vector at the center of our camera's viewport Vector3 rayOrigin = fpsCam.ViewportToWorldPoint(new Vector3(0.5f, 0.5f, 0.0f)); // Declare a raycast hit to store information about what our raycast has hit RaycastHit hit; // Set the start position for our visual effect for our laser to the position of gunEnd laserLine.SetPosition(0, gunEnd.position); // Check if our raycast has hit anything if (Physics.Raycast(rayOrigin, fpsCam.transform.forward, out hit, weaponRange)) { // Set the end position for our laser line laserLine.SetPosition(1, hit.point); directedAgent.MoveToLocation(hit.point); // added } else { // If we did not hit anything, set the end of the line to a position directly in front of the camera at the distance of weaponRange laserLine.SetPosition(1, rayOrigin + (fpsCam.transform.forward * weaponRange)); } } }
void Update() { // Check if the player has pressed the fire button and if enough time has elapsed since they last fired if (Input.GetMouseButtonDown(0) && Time.time > nextFire) { // Update the time when our player can fire next nextFire = Time.time + fireRate; // Start our ShotEffect coroutine to turn our laser line on and off StartCoroutine(ShotEffect()); // Create a vector at the center of our camera's viewport // Vector3 rayOrigin = fpsCam.ViewportToWorldPoint (new Vector3(0.5f, 0.5f, 0.0f)); // Declare a raycast hit to store information about what our raycast has hit RaycastHit hit; Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); // Set the start position for our visual effect for our laser to the position of gunEnd // Check if our raycast has hit anything if (Physics.Raycast(ray, out hit, weaponRange)) { // Set the end position for our laser line //Debug.Log(hit.point); StartCoroutine(directedAgent.MoveToLocation(hit.point)); } else { // If we did not hit anything, set the end of the line to a position directly in front of the camera at the distance of weaponRange } } }
// Update is called once per frame void Update() { agent.MoveToLocation(transform.position); }