Как лучше реализовать систему переключения оружия C# Unity 2D?

Вопрос скорее не по коду, а типо по структуризации.

Предположим, есть несколько оружий. Для каждого оружия есть своя текстурка игрока с этим оружием

введите сюда описание изображения введите сюда описание изображения введите сюда описание изображения введите сюда описание изображения

У каждого оружия разная точка выхода пули, короче конец ствола, muzzle.

И я бы хотел удобным образом сделать переключение оружий (т.е. смена текстур), а также изменение точки выстрела.

Ну т.е. для каждой текстуры отметить свой muzzle end.


Ответы (1 шт):

Автор решения: Vladimir

Зависит от количества оружия. Если видов оружия около 10 или меньше, то самым простым будет создать пустые дочерние GameObject'ы для каждого вида оружия и спозиционировать каждый из них. Удобство заключается в визуализации позиции. Зареференсить их можно вместе со спрайтами в сериализуемом объекте, что-то типа:

[Serializable]
class Weapon {
    public Sprite sprite;
    public GameObject projectileSpawnPoint;
}

Иначе, можно сделать то же самое, только вместо GameObject'а просто задать позцию:

[Serializable]
class Weapon {
    public Sprite sprite;
    public Vector2 projectileSpawnPoint;
}

Положить это все можно, например, в List (тогда за вид оружия отвечает его индекс в списке):

public class WeaponSwitcher : MonoBeahviour {
    [SerializeField] List<Weapon> _weapon;
}

Ну и при переключении оружия вы сразу можете взять и спрайт, и позицию в нем.

→ Ссылка