- 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