следование за игроком и обход препятсвий в 2d
Добавлено: 28 июл 2019, 22:01
Здравствуйте, подскажите как можно реализовать бота, для 2д игры с видом сверху, который следовал бы за игроком и при этом обходил препятсвия? Много читал в интернете на эту тему, знаю про алгоритмы A* или алгоритм дейкста. Но для их использования требуется создать матрицу, на основе игровой карты, в которой будут указаны веса и возможные пути. Тогда вопрос, как сделать матрицу по карте? A* Pathfinding Project - но для моей простой игры он слишком сложный да и хотелось бы самому разобраться в вопросе.
Сейчас бот идет за игроком но если между ним и игроком стена он упирается в нее(что естественно из кода)
Сейчас бот идет за игроком но если между ним и игроком стена он упирается в нее(что естественно из кода)
Синтаксис:
Используется csharp
Vector3 vectorToTarget = player.transform.position - transform.position;
float angle = Mathf.Atan2(vectorToTarget.y, vectorToTarget.x) * Mathf.Rad2Deg;
Quaternion q = Quaternion.AngleAxis(angle, Vector3.forward);
transform.rotation = Quaternion.Slerp(transform.rotation, q, Time.deltaTime * rSpeed);
Vector3 dir = player.transform.position - gameObject.transform.position;
gameObject.transform.position += dir.normalized * speed * Time.deltaTime;
float angle = Mathf.Atan2(vectorToTarget.y, vectorToTarget.x) * Mathf.Rad2Deg;
Quaternion q = Quaternion.AngleAxis(angle, Vector3.forward);
transform.rotation = Quaternion.Slerp(transform.rotation, q, Time.deltaTime * rSpeed);
Vector3 dir = player.transform.position - gameObject.transform.position;
gameObject.transform.position += dir.normalized * speed * Time.deltaTime;