Я пытаюсь создать базовую игровую логику ИИ, в которой один игрок бежит, а другой избегает.Это прекрасно работает, но, как я уже сделал, я сейчас ищу защитника (ранее статичного), чтобы преследовать бегуна.Я долго боролся за это, но обнаружил, что transform.up - это магия, которую я искал, поскольку он использовал игроков Y (зеленая ось), чтобы двигаться дальше и использовал вращение.
На моей 2-й плоскости это сработалохорошо, когда бегущий бегает по странице, но мой защитник бежит, и в этом моя проблема.Я ожидал , что transform.up будет перемещаться по странице, когда я поверну символ на 180 градусов по оси Z. Я обнаружил, что transform.up все еще поднимается по странице, и яне знаю, чего мне не хватает.
Чтобы переместить игроков, я делаю следующее (в рамках Update ()):
transform.Translate(transform.up * 15f * Time.deltaTime);
Чтобы попытаться отладить проблему, ядобавил следующее в Start ():
// DEBUG: Show position indicators;
if (showPositionIndicators == true) {
Dictionary<string, Vector3> posIndicators = new Dictionary<string, Vector3>();
posIndicators.Add("Up", transform.up);
posIndicators.Add("Rt", transform.right);
posIndicators.Add("Dn", -transform.up);
posIndicators.Add("Lt", -transform.right);
posIndicators.Add("Fd", transform.forward);
posIndicators.Add("Bk", -transform.forward);
Vector3 scaleLocPos = new Vector3(10f, 10f, 10f);
dbgPosInd = new List<GameObject>();
foreach (KeyValuePair<string, Vector3> posIndicator in posIndicators) {
GameObject t = Instantiate(prefabPosInd, transform);
t.name = "Pos_" + posIndicator.Key;
t.transform.localPosition = Vector3.Scale(posIndicator.Value, scaleLocPos);
t.GetComponent<TextMeshProUGUI>().text = posIndicator.Key;
dbgPosInd.Add(t);
}
}
Похоже, это указывает на то, что transform.up действительно «позади» и такой же, как и бегун.Я что-то упустил?Это предназначено?Как бы я поступил так, чтобы оба игрока двигались вперед относительно их собственного вращения (то есть оба бегут к середине)
[