UNITY/크레이지아케이드 모작
싱글 모드 구현
2zreal
2024. 7. 22. 18:47
-물줄기 구현
물풍선 설치 3초 후 물줄기가 터지는 것을 구현해 보았다.
물줄기 각각의 프리팹을 생성한다.
물풍선이 터질 때 power에 맞게 물줄기의 길이를 조절한다.
private void CreateWaterStream()//상 하 좌 우로 물줄기 생성
{
Instantiate(center, transform.position, Quaternion.identity);
CreateStream(Vector3.right, right, rightE);
CreateStream(Vector3.left, left, leftE);
CreateStream(Vector3.down, down, downE);
CreateStream(Vector3.up, up, upE);
}
private void CreateStream(Vector3 direction, GameObject streamPrefab, GameObject endPrefab)
{
for (int i = 0; i <= power; i++)
{
Vector3 positionOffset = direction * 0.6666f * (i + 1);//현재 물줄기보다 한칸 앞을 탐색
Vector3 targetPosition = transform.position + positionOffset;
Collider2D hitCollider = Physics2D.OverlapPoint(targetPosition);// 해당 위치에 있는 게임 오브젝트를 찾음
if (power == i || hitCollider != null)
{
if (i != 0)
{
Instantiate(endPrefab, transform.position + direction * 0.6666f * i, Quaternion.identity);
}
if ((hitCollider != null && hitCollider.CompareTag("Box")) && i != power)//한칸 앞에 물줄기가 있다면 물줄기 생성 중단;
{
Tile tile = hitCollider.gameObject.GetComponent<Tile>();
tile.Bomb1();
//Destroy(hitCollider.gameObject);
break;
}
}
else
{
if (i != 0)
{
Instantiate(streamPrefab, transform.position + direction * 0.6666f * i, Quaternion.identity);
}
}
}
}
만약 물줄기에 Tile이 맞는다면 Tile을 제거한다.
public void Bomb1()
{
GameObject BombMotion = Instantiate(bomb, transform.position, Quaternion.identity);
Bomb BombScript = BombMotion.GetComponent<Bomb>();
BombScript.getItemNumber(itemNumber);
Destroy(gameObject);
}
타일은 타일에 숨은 아이템 번호를 가지고 있다.
private IEnumerator WaitForAnimation()
{
yield return new WaitForSeconds(animator.GetCurrentAnimatorStateInfo(0).length - 0.1f);// 애니메이션 클립의 길이만큼 대기
getItem();
Destroy(gameObject);
}
public void getItemNumber(int number)
{
itemNumber = number;
}
private void getItem()//이렇게 생성하지 말고 타일을 만들면서 한번에 같이 만들자.. 그게 맞다.
{
if (itemNumber >= 1 && itemNumber <= 5)
{
Instantiate(item1, transform.position, Quaternion.identity);
}
else if (itemNumber >= 6 && itemNumber <= 10)
{
Instantiate(item2, transform.position, Quaternion.identity);
}
}
파괴되는 애니메이션이 끝나면 아이템을 생성하고 파괴모션을 파괴한다.