본문 바로가기
Project/[Unity] 지진 시뮬레이션

[Unity] 지진 시뮬레이션 13 - 반복 학습

by ruki 2024. 4. 5.

지속적으로 학습이 진행되도록 만들 것이다.


1. 변수 정리

여러 곳에 퍼져 있는 게임 환경 변수들을 gameManager 코드에 모을 것이다.

 

playerMove에 있는 게임 환경 변수를 gameManager에 옮긴다.

public int DNASize;
public float ActionInterval;
public float playerSpeed;

 

DNA = new int[DNASize];
. . .
int time = (int)((Time.time - StartTime)/ActionInterval);
. . .
transform.Translate(Move * Vector3.right * playerSpeed * Time.deltaTime);

위 코드를 수정해 준다.

DNA = new int[gameManager.instance.DNASize];
. . .
int time = (int)((Time.time - StartTime)/gameManager.instance.ActionInterval);
. . .
transform.Translate(Move * Vector3.right * gameManager.instance.playerSpeed * Time.deltaTime);

 

값을 할당해 준다.

해더를 추가하여 창을 꾸며준다.

[Header ("DNA Setting")]
public int DNASize;
public int GeneSize;
public int MutationSize;

[Header ("Player Number")]
public int PlayerNumber; 

[Header ("Player Setting")]
public float ActionInterval;
public float playerSpeed;

[Header ("etc.")]
public GameObject BaseObject; 
public GameObject ParentObject; 
public List<GameObject> ObjectList = new List<GameObject>();


2. 플레이어 초기화

초기화 함수를 작성해 준다.

void Re_Start(GameObject player)
{
    playerMove playerCode   = player.GetComponent<playerMove>();
    playerCode.StartTime    = Time.time;

    player.transform.position       = ParentObject.transform.position;
    player.transform.eulerAngles    = Vector3.zero;

    player.SetActive(true);
}

 

SetObiect 함수와 중복되는 게 존재함으로 SetObiect 함수도 수정해 준다.

void SetObject()
{
    for (int i = 0; i < PlayerNumber; i++) 
    {
        ObjectList.Add(Instantiate(BaseObject, ParentObject.transform));

        playerMove ObjectCode   = ObjectList[i].GetComponent<playerMove>();

        ObjectCode.DNA = new int[DNASize];
        for(int L = 0; L < DNASize; L++) ObjectCode.DNA[L] = Random.Range(0,6);

        Re_Start(ObjectList[i]);
    } 
}

 

playerMove코드에서 Stert부분은 필요가 없어졌으므로 삭제해 준다.

 

Reset 함수에 초기화 함수를 넣고 추가로 다른 값도 초기화해 준다.

LiveObjectNumber = PlayerNumber;
for (int i = 0; i < PlayerNumber; i++) Re_Start(ObjectList[i]);

학습이 진행된다.