Так что мне удалось изменить код, который я нашел для луча, чтобы мой враг двигался к координатам моей камеры первого лица. Тем не менее, мне нужно изменить способ, которым лучевое кастинг перемещает противника вокруг препятствий на моей сцене. Я немного запутался в переменных myTransform
/transform
/target
.Изменение скрипта AI с raycasting в Unity
Так что это мой код;
var speed : float = 10.0;
private var dir : Vector3;
private var dirFull : Vector3;
var target : Transform;
var rotationSpeed = 3;
var myTransform : Transform;
function Awake()
{
myTransform = transform;
}
function Start()
{
target = GameObject.FindGameObjectWithTag("Player").transform; //Target the player
}
function FixedUpdate()
{
// the directional vector to the target
dir = (target - transform.position).normalized;
var hit : RaycastHit;
// more raycasts
var leftRay = transform.position + Vector3(-0.125, 0, 0);
var rightRay = transform.position + Vector3(0.125, 0, 0);
// check for forward raycast
if (Physics.Raycast(transform.position, transform.forward, hit, 5))/
{
if (hit.transform != this.transform)
{
Debug.DrawLine (transform.position, hit.point, Color.white);
dir += hit.normal * 20; // 20 is force to repel by
}
}
// check for leftRay raycast
if (Physics.Raycast(leftRay, transform.forward, hit, 5))
{
if (hit.transform != this.transform)
{
Debug.DrawLine (leftRay, hit.point, Color.red);
dir += hit.normal * 20; // 20 is force to repel by
}
}
// check for rightRay raycast
if (Physics.Raycast(rightRay, transform.forward, hit, 5))
{
if (hit.transform != this.transform)
{
Debug.DrawLine (rightRay, hit.point, Color.green);
dir += hit.normal * 20; // 20 is force to repel by
}
}
// rotation
var rot = Quaternion.LookRotation (dir);
transform.rotation = Quaternion.Slerp (transform.rotation, rot, Time.deltaTime);
//position
transform.position += transform.forward * (2 * Time.deltaTime); // 20 is speed
}
Я почти уверен, только думаю, что нужно изменить это dir
переменной так, что он использует новое преобразование кода. Но, как я уже сказал, меня путают с какой переменной использовать.
EDIT: Я понимаю, что мне нужно изменить код в нижней части обновления, чтобы он учитывал поворот, возникающий, когда препятствие встречается с помощью лучей. Вот почему я думаю, что это просто «дир» и «гниль», которые нужно изменить, а затем использовать в коде положения и вращения.
Я предполагаю, что этот сценарий прикреплен к противнику, а не к игроку. Это верно? – RustyTheBoyRobot
Да, он привязан к врагу. – TJBaldy
Я только что разработал решение. Поставит его как ответ, когда мне позволено (я должен подождать 8 часов, прежде чем отправлять ответ на свой вопрос). – TJBaldy