Как заставить дочерний объект, перестать следовать за родителем?
Пытаюсь реализовать систему прицеливания, как в старом добром alien shooter.
Для удобства сделал прицел дочерним для игрока(так как углы в этом случае считаются относительно положения игрока).
Закономерно появилась проблема: при повороте игрока, поворачивается и прицел, в связи с чем он начинает бесконечно крутиться(
Решить эту проблему на мой взгляд можно тремя способами:
1)Получить локальные координаты прицела, относительно игрока, при этом прицел не должен быть дочерним.
2)закрепить прицел в глобальных координатах(крайний случай)
3) аналог функции Vector3.Angle( , ) с задаваемой точкой отсчёта.
Код показать не могу, так как скрипт только в теории.
Хотелось бы узнать про первый и третий
Да по моему все очевидно. У чувака есть моделька, ее дочерним объектом является прицел (непонятно зачем, но допустим). Поворачиваем модельку - поворачивается и прицел относительно модельки.
Мне кажется что прицел вообще надо отдельно хранить - он же "экранный"
смотря что за прицел)
и если камера тоже под игроком..
то вращается игрок. вращается камера. вращается прицел. но друг относительно друга то они останутся на месте,если ничего там скриптами не навешивать.
к тому же смущает "начинает бесконечно крутиться", просто дочерний объект делая получить такое не очень представляю как или описано некорректно и на деле это просто смещение постоянное.
а так да. экранный прицел отдельно где нибудь в сцене ляпнуть.
в общем все равно автору бы уточнить что он там в своей изометрии (судя по отсылке к alien shooter) налепил.
Я бы сделал модель игрока, и прицел дочерними к контроллеру на котором закреплена камера, ну грубо говоря летающая штука с верху. ни каких проблем не будет тогда с иерархией и всем остальным. Так же это освобождает от кучи проблем в будущем, а если вы захотите заменить игрока ? и тд