Transform.inversetransformpoint Неожиданные возвратные значения в Unity 6C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Transform.inversetransformpoint Неожиданные возвратные значения в Unity 6

Сообщение Anonymous »

Я работаю над игрой для игрового варенья. Я работаю в 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Mockito + Spy: Как собрать возвратные значения
    Anonymous » » в форуме JAVA
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Не удалось найти Transform-api.jar (com.android.tools.build:transform-api:2.0.0-deprecated-use-gradle-api)
    Anonymous » » в форуме Android
    0 Ответы
    41 Просмотры
    Последнее сообщение Anonymous
  • Safari не учитывает CSS-transform-origin, «transform-box: fill-box» не помогает
    Anonymous » » в форуме CSS
    0 Ответы
    59 Просмотры
    Последнее сообщение Anonymous
  • Unity Photon Fusion 2.0 Network Transform, выпуск
    Anonymous » » в форуме C#
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • Unity, Rigidbody.MovePosition() не работает, если Transform.position только что изменен
    Anonymous » » в форуме C#
    0 Ответы
    27 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»