Я создал руку с настраиваемой осью в Unity, которая, по существу, должна указывать везде, где указала мышь, независимо от ориентации игрока. Теперь эта рука выглядит странно, когда указана на сторону, противоположную той, на которой она была нарисована, поэтому я использую SpriteRenderer.flipY = true
, чтобы перевернуть спрайт и сделать его нормальным. У меня также есть оружие в конце руки, что в основном прекрасно. Теперь проблема в том, что у меня есть «FirePoint» в конце ствола оружия, и когда спрайт получает отражение, его положение не меняется, что влияет на частицы и положение стрельбы. По сути, все, что должно произойти, состоит в том, что Y-позиция FirePoint должна стать отрицательной, но Unity, похоже, считает, что я хочу, чтобы изменение позиции было глобальным, тогда как я просто хочу, чтобы оно было локальным, чтобы оно могло работать с любым вращение руки находится. Я попытался это сделать:Перемещение чего-то повернутого на пользовательский шарнир Unity
if (rotZ > 40 || rotZ < -40) {
rend.flipY = true;
firePoint.position = new Vector3(firePoint.position.x, firePoint.position.y * -1, firePoint.position.z);
} else {
rend.flipY = false;
firePoint.position = new Vector3(firePoint.position.x, firePoint.position.y * -1, firePoint.position.z);
}
Но это работает на глобальной основе, а не на локальной, которая мне нужна. Любая помощь будет высоко оценена, и я надеюсь, что я предоставил достаточно информации для достижения окончательного результата. Пожалуйста, сообщите мне, если вам нужно что-нибудь еще. Заранее благодарю вас за хороший день!
рассматривается с использованием 'localPosition'? –
Спасибо, это очень помогло мне. Пожалуйста, подумайте о том, чтобы ответить на этот вопрос, чтобы я мог его принять. – ElectricBoogaloo
для более легкого решения также проверьте мой ответ. и проголосовать –