Я пытаюсь внедрить систему для бонусов в свою игру, но не знаю, как к ней подойти.До сих пор у меня есть средство запуска при включении питания, которое создает префаб при включении питания в случайном месте.Однажды подобранная, она уничтожает себя и порождает в другом месте.Один и тот же префаб используется для всех способностей, и на карте одновременно только один.
spawnLocations = GameObject.FindGameObjectsWithTag("spawnLocation");
Instantiate(powerup, spawnLocations[spawnRandom].transform.position, transform.rotation);
Что касается бонусов, то при поднятии он должен удалить текущую силу (если у игрока есть такая сила).) и замените его новым случайно выбранным.(Таймеры не нужны).
Я сделал пару простых бонусов:
public void SpeeedBoost(float speedMultiplied) {
var playerController = gameObject.GetComponent<PlayerController>();
playerController.speed = playerController.speed * speedMultiplied;
}
public void JumpBoost(float jumpPower) {
var playerJump = gameObject.GetComponent<PlayerJump>();
playerJump.jumpSpeed = playerJump.jumpSpeed * jumpPower;
}
+ возможно, смена оружия и т. Д.
И их следует называть так:
private void OnTriggerEnter2D(Collider2D collision) {
if (collision.gameObject.tag == "powerup") {
// Remove current powerup and call a new random one
}
}
Так что мне нужна помощь здесь.Как я должен структурировать свои бонусы?И как я могу назвать их случайно?Думая о том, чтобы, возможно, использовать для этого единствоИли, может быть, сохранить каждый powerup как префаб со своим собственным сценарием и поменять их местами (хотя это выглядит немного грязно).
Я немного растерялся, любые предложения / примеры приветствуются.:)