Unity 3d использование кода на передвижение по верх Nav mesh agent
using Unity.Collections;
using UnityEngine;
using UnityEngine.AI;
public class PlayerController : MonoBehaviour
{
public LayerMask Click;
public Transform shotPoint;
public GameObject bullet;
public float range;
Rigidbody rb;
private NavMeshAgent myAgent;
Ray myRay;
RaycastHit hitInfo;
public Camera _camera;
void Start()
{
myAgent = GetComponent<NavMeshAgent>();
rb = GetComponent<Rigidbody>();
}
private void Update()
{
if (Input.GetMouseButtonDown(0))
{
myRay = _camera.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(myRay, out hitInfo, 100, Click))
{
myAgent.SetDestination(hitInfo.point);
}
}
if (Input.GetKeyDown(KeyCode.LeftAlt))
{
Instantiate(bullet, shotPoint.position, shotPoint.rotation);
}
if (Input.GetKeyDown(KeyCode.Q))
{
}
}
}
Описание цели:
данный код служит для передвижения по клику мыши, эту часть он отрабатывает на ура. Проблема в части где на клавишу Q должен производится перекат. Я пробовал так:
if (Input.GetKeyDown(KeyCode.Q)) { rb.velocity = transform.forward * range; }но все работало криво. При нажатии на Q персонаж перемещается на некое кол-во единиц, но в тот же момент как он переместился он по крутится и вернется в точку (или в ту которая была задана для перемещения путем нажатием клавиши мыши, или в изначальную если перед нажатием Q не было задано другое перемещение )
Так в чем вопрос то:
- Как написать импульсное перемещение(нажал на кнопку и переместился на некое кол-во), так чтобы он не противоречил Nav mesh agent?