Как правило, вы не хотите напрямую связываться с объектами transform.rotation, по крайней мере, если вы хотя бы немного не понимаете кватернионы (я не знаю!).
Я вижу некоторые проблемы с вашим кодом, но, как представляется, общая нить заключается в том, что вы не совсем понимаете, как работают преобразования. В частности, вы можете захотеть заглянуть в мир / локальное пространство.
Обычный способ управления игроком выглядит примерно так:
void DoMovement(Transform player)
{
//If you move first your controls might feel 'drifty', especially at low FPS.
Turn(player);
Move(player);
}
void Turn(Transform player)
{
float yaw = Input.GetAxis("Yaw") * time.deltaTime; //Aka turn left/right
player.Rotate(0, yaw, 0, Space.Self);
// Space.Self is the default value, but I put it here for clarity.
//That means the player will rotate relative to themselves,
//...instead of relative to the world-axis, like in your code.
}
Вы не спрашивали о движении, но ваш персонаж всегда будет двигаться относительно мира. Приведенное ниже должно заставить его двигаться относительно камеры.
Transform _cameraTransform; //Assumes this is set druing Start()
void Move(Transform player)
{
var forwardMove = _cameraTransform.Forward; //Get whatever direction is 'forward' for camera
forwardMove.Y = 0; //Don't want movement up and down.
forwardMove = forwardMove.normalized; //Normalize sets the 'power' of the vector to 1.
//If you set Y to 0 and don't normalize you'll go slower when camera looks down
//...than when camera is flat along the plane
player.position += forwardMove * Input.GetAxis("Vertical") * time.deltaTime;
//Here you could do the same for strafe/side to side movement.
//Would be same as above, but using the transform.right and Horizontal axis
}
Теперь я делаю некоторые предположения, поскольку вы не указали, что это за игра и какие элементы управления вам нужны. Я предполагаю, что у вас есть персонаж, бегающий по большей части на плоской плоскости (без управления самолетом / космическим кораблем), и что камера прикреплена к игроку. На самом деле это не так.
В любом случае я советую вам ознакомиться с учебными пособиями , особенно с учебным пособием по керлингу, которое, как я обнаружил, полезно для начинающих, чтобы понять основные элементы управления игроками, которые не являются просто миром. -родственник. Другие уроки тоже очень хороши, если вы думаете, что они интересны.
Помимо официального Unity выпускает тонну от неплохих до удивительных уроков, включая видеоуроки, так что для чего-то подобного вы можете просто найти <game type> tutorial
и выбрать то, что вам нравится. Приступая к работе, я советую вам избегать самых коротких видеороликов, так как вы, вероятно, очень выиграете от объяснения, которое подходит только для более длинных видео. Конечно, это не значит, что вы должны выбирать самые длинные видео.