Как лучше реализовать систему переключения оружия C# Unity 2D?
Вопрос скорее не по коду, а типо по структуризации.
Предположим, есть несколько оружий. Для каждого оружия есть своя текстурка игрока с этим оружием
У каждого оружия разная точка выхода пули, короче конец ствола, muzzle.
И я бы хотел удобным образом сделать переключение оружий (т.е. смена текстур), а также изменение точки выстрела.
Ну т.е. для каждой текстуры отметить свой muzzle end.
Ответы (1 шт):
Зависит от количества оружия. Если видов оружия около 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;
}
Ну и при переключении оружия вы сразу можете взять и спрайт, и позицию в нем.