added pathfinding

This commit is contained in:
Janis M
2022-03-09 13:01:02 +01:00
parent a8d8b7b04b
commit 675481d8ad
21 changed files with 962 additions and 311 deletions

View File

@@ -1,22 +1,52 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
public class PersonMovement : MonoBehaviour
{
NavMeshAgent agent;
private int currentPathIndex;
[SerializeField] private List<Vector3> pathVectorList;
private const float speed = 40f;
private void Awake()
{
agent = GetComponent<NavMeshAgent>();
agent.updateRotation = false;
agent.updateUpAxis = false;
//agent.avoidancePriority = Random.Range(1, 100);
}
public void SetTarget(Transform target)
private void Update()
{
agent.SetDestination(target.position);
HandleMovement();
if (Input.GetMouseButton(0))
{
SetTarget(Camera.main.ScreenToWorldPoint(Input.mousePosition));
}
}
void HandleMovement()
{
if (pathVectorList != null)
{
Vector3 targetPosition = pathVectorList[currentPathIndex];
if (Vector3.Distance(transform.position, targetPosition) > 1f)
{
Vector3 moveDir = (targetPosition - transform.position).normalized;
float distanceBefore = Vector3.Distance(transform.position, targetPosition);
transform.position = transform.position + moveDir * speed * Time.deltaTime;
}
else
{
currentPathIndex++;
}
}
}
public Vector3 GetPosition()
{
return transform.position;
}
public void SetTarget(Vector3 targetTransform)
{
pathVectorList = Pathfinding.Instance.FindPath(GetPosition(), targetTransform);
}
}