Я работаю над игрой для игрового варенья. Я работаю в Unity2d версии 6000.0.32f1. Я пытаюсь получить круг, который является моим врагом, чтобы встретиться с моим игроком, который также является кругом, обновляя вращение вражеского круга каждый кадр, чтобы встретиться с положением круга игрока. Я использую код, который я построил, который заставляет игрока кружок следовать положению мыши, вычисляя угол между смещениями x и y местоположения указателя в мировых координатах. Я пытаюсь использовать Transform. Возвратное значение функции колеблется между тем, что я ожидаю, которая является позицией круга игрока относительно круга врага, и значение, которое я не ожидал на оси x на оси y. < /p>
я использовал следующий код. Как упомянуто выше, я получил возвращаемые значения от функции Transform.inversetransformpoint (PlayerPos), который был неожиданным, был неожиданным каждый другой призыв к функции. Смотрите изображение ниже вывода. < /P>
using System;
using UnityEngine;
public class Enemy : MonoBehaviour {
Player player;
void Start () {
player = FindFirstObjectByType
();
}
void Update () {
EnemyAI();
}
void EnemyAI () {
if (player == null) return;
Vector3 playerPos = player.gameObject.transform.position;
// Look at Player
Debug.Log("Enemy Player Position: " + playerPos);
Vector3 playerPosRel = transform.InverseTransformPoint(playerPos);
Debug.Log("Enemy Player Position Relative: " + playerPosRel);
float rotationAngle = playerPosRel.x < Mathf.Epsilon ? 0 :
Mathf.Atan(playerPosRel.y/playerPosRel.x) * Mathf.Rad2Deg;
Debug.Log("Enemy Rotation Degrees: " + rotationAngle);
transform.rotation = Quaternion.Euler(
0,
0,
Mathf.Sign(playerPosRel.x) < 0 ?
90 + rotationAngle :
-90 + rotationAngle
);
// Approach Player
transform.position = Vector3.Lerp(
transform.position,
playerPos,
Time.deltaTime
);
}
}
< /code>
Вывод моего кода, который возвращает неожиданное значение, каждый другой вызов Inversetransformpoint
Почему Inversetransformpoint возвращает эти неожиданные значения? Как работает Inversetransformpoint? Какую операцию я могу попробовать отдельно независимо от Inversetransformpoint, чтобы получить позицию игрока относительно врага?
Подробнее здесь: https://stackoverflow.com/questions/794 ... in-unity-6
Transform.inversetransformpoint Неожиданные возвратные значения в Unity 6 ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Safari не учитывает CSS-transform-origin, «transform-box: fill-box» не помогает
Anonymous » » в форуме CSS - 0 Ответы
- 59 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Unity, Rigidbody.MovePosition() не работает, если Transform.position только что изменен
Anonymous » » в форуме C# - 0 Ответы
- 27 Просмотры
-
Последнее сообщение Anonymous
-