Доброго времени суток. Задача такова: надо повернуть персонажа по направлению вектора. Использован обычный FPSController, на него ссылается player во втором методе.
Вращение отдельно камеры не предлагать.
void throwPortal(GameObject portal, bool isItFirst) {
int x = Screen.width / 2;
int y = Screen.height / 2;
Ray ray = player.GetComponent<Camera>().ScreenPointToRay(new Vector3(x, y));
RaycastHit hit;
if (Physics.Raycast(ray, out hit)) {
if (isItFirst) firstDirection = hit.normal;
else secondDirection = hit.normal;
portal.transform.position = hit.point;
portal.transform.rotation = Quaternion.LookRotation(hit.normal); // здесь вращение применяется
}
}
void OnTriggerEnter(Collider other) {
Debug.Log("Inside trigger");
if (other.tag == "Player") {
other.transform.position = otherPortal.transform.position + otherPortal.transform.forward*1;
if (isFirst) direction = other.GetComponent<ThrowPortal>().getDirectionSecond();
else direction = other.GetComponent<ThrowPortal>().getDirectionFirst();
Debug.Log("Изначальное вращение"+player.transform.rotation.ToString());
Debug.Log("То что должно быть" + Quaternion.LookRotation(direction).ToString());
player.transform.rotation =Quaternion.LookRotation(direction); // !!! сам акт поворота !!!
Debug.Log("Результат" + player.transform.rotation.ToString()); // показывает то же самое, что и вывод выше
player.transform.position += direction * 5; // эта строка работает корректно, то бишь вектор не потерялся
}
}
Буду благодарен за любую помощь.