Что-то у меня перед обедом потянуло на мысли, РобоКот побудил
Кратно типо такого:
Vector2 {
int x
int y
}
Object {
Vector2 location
int angle (RotationView)
Vector2 targetMove
Vector2 targetView
int health
int healthMax
}
TypeObject {
Enemy
}
self - ссылка на свой объект.
(readonly) vector2 Object.Location
(readonly) int Object.RotationMove - возвращает угол направления движения, может быть null
(readonly) int Object.RotationView - возвращает угол направления прицеливания
(readonly) float Object.Speed - возвращает скорость перемещения
(readonly) Object.Health
(readonly) Object.MaxHealth
(get/set) Object.TargetMove(Vector2 / int x, int y) - точка цели назначения движения, может быть null
(get/set) Object.TargetView(Vector2 / int x, int y) - точка на которую смотрит, может быть null
(readonly) Object.InView(Object / Vector2 / int x, int y) - проверяет если объект в радиусе видения, возвращает от 0 до 1 (на сколько виден). 0 если выходит за радиус видиния. 1 если смотрит прямо на объект.
(readonly) Object.ClosestObjects(TypeObject,distance=100,limit=0) - возвращает список ближних объектов по типу, менее указанного растояния, сортируя от самого ближнего до самого дальнего, и ограничивая длину списка (0 - не ограничено). Список может быть пустым.
Это то что было бы доступно из скрипта, ещё нужно конечно математики побольше, работа с векторами и т.п. Было бы круто в виде обучающего приложения
Ранний набросок..