Question by
boss2070301 · Jul 25, 2021 at 03:35 AM ·
blockbreak
I need help writing a code that chooses between 4 kinds of blocks
Right now I trying to make a random level generator for my block breaker game that I made a while back following a udemy course.
I need the script to choose between 5 types of blocks (No block, 1 hit block, 2 hit block, 3 hit block, and indestructible block)
I put the block code below
[SerializeField] AudioClip breakSound;
[SerializeField] GameObject blockSparklesVFX;
[SerializeField] Sprite[] hitSprites;
// cached reference
LevelChanger levelChanger;
[SerializeField] int timesHit;
public GameObject BlockSparklesVFX { get => blockSparklesVFX; set => blockSparklesVFX = value; }
private void Start()
{
CountBreakableBlocks();
}
private void CountBreakableBlocks()
{
levelChanger = FindObjectOfType<LevelChanger>();
if (tag == "Breakable")
{
levelChanger.CountBlocks();
}
}
private void OnCollisionEnter2D(Collision2D collision)
{
if (tag == "Breakable")
{
HandleHit();
}
}
private void HandleHit()
{
timesHit++;
int maxHits = hitSprites.Length + 1;
if (timesHit >= maxHits)
{
DestroyBlock();
}
else
{
ShowNextHitSprites();
}
}
private void ShowNextHitSprites()
{
int spriteIndex = timesHit - 1;
if (hitSprites[spriteIndex] != null)
{
GetComponent<SpriteRenderer>().sprite = hitSprites[spriteIndex];
}
else
{
Debug.LogError("Block sprite is missing from array" + gameObject.name);
}
}
private void DestroyBlock()
{
Destroy(gameObject);
levelChanger.BlockDestroyed();
TriggerSparklesVFX();
FindObjectOfType<GameStatus>().AddToScore();
SoundEffects();
}
private void SoundEffects()
{
AudioSource.PlayClipAtPoint(breakSound, Camera.main.transform.position);
}
private void TriggerSparklesVFX()
{
GameObject sparkles = Instantiate(blockSparklesVFX, transform.position, transform.rotation);
Destroy(sparkles, 1f);
}
Comment