Я создаю игру с автономной камерой.Я хочу, чтобы эта камера показывала, куда движется игрок.Игра позволяет игроку иметь широкий диапазон движений, а не просто ходить в 3D.Так, например, если игрок падает на землю, камера должна располагаться над игроком, глядя на него и на землю.И если игрок движется вперед, камера должна расположиться позади игрока, глядя вперед.
Я включил то, что я считаю лучшей реализацией всего, что я пробовал ниже, с комментариями, объясняющими функциональность и некоторыеиз моих проблем.
///This should position the camera in a straight line between the player and the direction the player is heading. This seems to work to work nearly as expected, but seems to line up to what I believe to be the opposite direction in some cases.
v3T = player.transform.position - (player.GetComponent<Rigidbody().velocity - player.transform.position);
p2 = player.transform.position + v3T.normalized * 7.0f;
finalP = Vector3.SmoothDamp(finalP,p2,ref velocity, 0.002f, 850f);
transform.position = new Vector3(finalP.x, finalP.y, finalP.z);
//Using a LookAt like this leads for decent results, but not perfect. Possibly due to me not lining up the camera correctly?
transform.LookAt(player.transform.position);
//Using a Lookat in direction the player is moving doesn't give me the expected result. It seems to lose track of the player easily, and doesn't go in the direction that I thought it would at all times.
//transform.LookAt(player.GetComponent<Rigidbody>().velocity)
Камера работает неправильно
Камера работает правильно