- Home /
I'm not too sure what's wrong with my if statement...
I'm having trouble moving my player on a navmesh based off a ray and an if statement. Any help with this would really help, thanks. Here's the code:
 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 
 public class PlayerController : MonoBehaviour
 {
     PlayerMovement motor;
     Camera cam;
 
     public LayerMask movementMask;
     // Start is called before the first frame update
     void Start()
     {
         motor = GetComponent<PlayerMovement>();
         cam = Camera.main;
     }
 
     // Update is called once per frame
     void Update()
     {
         if (Input.GetMouseButtonDown(0))
         {
             Debug.Log("OKAY HERE!");
             Ray cameraRay = cam.ScreenPointToRay(Input.mousePosition);
 
             if (Physics.Raycast(cameraRay, out RaycastHit hit, Mathf.Infinity, movementMask))
             {
                 Debug.Log("SAME HERE!");
                 Debug.Log(hit.point);
                 
                 motor.MoveToPoint(hit.point);
             }
         }
     }
 }
And here's the script that the Vector3 is sent to.
 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 using UnityEngine.AI;
 
 
 [RequireComponent(typeof(NavMeshAgent))]
 
 public class PlayerMovement : MonoBehaviour
 {
     NavMeshAgent agent;
     // Start is called before the first frame update
     void Start()
     {
         agent = GetComponent<NavMeshAgent>();
     }
 
     // Update is called once per frame
     public void MoveToPoint(Vector3 point)
     {
         Debug.Log("Movement script recieved instructions.");
         agent.SetDestination(point);
     }
 }
 
So far I've...
 ➡Put in the Debug.Log lines, only the first is displaying in the console on click.
 ➡Made sure that the layer set on the public LayerMask is the same as the layer assigned to the ground in the game.
 ➡Swapped the Mathf.Infinity for 1000 to make sure that wasn't causing issues.
 ➡Converted the hit.point into a new Vector3 using this code:
  {
             if (Input.GetMouseButtonDown(0))
             {
                 Debug.Log("OKAY HERE!");
                 Ray cameraRay = cam.ScreenPointToRay(Input.mousePosition);
     
                 if (Physics.Raycast(cameraRay, out RaycastHit hit, Mathf.Infinity, movementMask))
                 {
                     Vector3 targetedGround = new Vector3(hit.point.x, hit.point.y, hit.point.z);
                     Debug.Log("SAME HERE!");
                     Debug.Log(hit.point);
                     Debug.Log(targetedGround);
                     motor.MoveToPoint(targetedGround);
                 }
             }
         }
    
Though I really couldn't see this doing anything, I'm just at the point of throwing anything that pops into my head at it.
Your answer
 
 
             Follow this Question
Related Questions
Character triple+ Jumping: Please Help! 0 Answers
Movable Timeline of NavMeshAgent movement? 1 Answer
Player moves slightly to the side? 1 Answer
Gaps in the Nav mesh 0 Answers
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                