커뮤니티
포인트
쿠폰
내 강의실
국비 신청 내역
증명서
계정
로그아웃
학습 질문
개발 일지
나의 활동
답변 완료
코인 생성하는 코루틴함수
undefined주차
북마크
김*안
댓글
1
추천
0
조회수
13
조회수
13
답변 완료

* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.

* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.


코인 프리팹에 연결된 coinCollision 에서는 닿았을때 점수가 오르면서 SetActive(false)가 되어 사라지게 됩니다.

그런데 CreateCoin 스크립트안에 코인을 생성하는 코루틴 함수에서는 2초마다 SetActice(true)가 됩니다.


실제 게임을 플레이했을때

코인을 먹으면 점수가 오르며 없어졌다가 다시 코루틴 함수에 의해 1~2초 안에 다시 또 새로운 코인이 생성됩니다ㅠㅠ


한 번 먹은 코인이 다시 생성되지 않도록 하고싶은데 도움 부탁드려요!






작성한 코드 및 에러 메세지

import { GameObject, WaitForSeconds, Quaternion } from "UnityEngine";

import { ZepetoScriptBehaviour } from "ZEPETO.Script";


export default class CreateCoin extends ZepetoScriptBehaviour {

public coinPrefab: GameObject;

public coins: GameObject[];


SelectRandom() {

return Math.floor(Math.random() * this.coins.length);

}


*CreateCoin() {

while (true) {

console.log("코루틴 시작");

//2초 기다리기

yield new WaitForSeconds(2);

console.log("2초 지남");


//랜덤 뽑기

let randomPositionObj = this.SelectRandom();

//배치 => GameObject.Instantiate([어느 오브젝트를], [어느 좌표에],[로테이션])

let createdCoin = GameObject.Instantiate(

this.coinPrefab,

this.coins[randomPositionObj].transform.position,

Quaternion.identity

) as GameObject;

//활성화

createdCoin.SetActive(true);

console.log(`생성된 코인: ${createdCoin}`);

}

}


Start() {

this.StartCoroutine(this.CreateCoin());

console.log("시작");

}

}

오류 발생 시, 작성한 코드 전체와 에러 메시지를 첨부해 주세요.

Tip 1) </> 아이콘을 눌러 코드박스를 만들어 보세요.

Tip 2) Ctrl+A(맥의 경우 Command+A) 단축키로 코드를 한 번에 선택할 수 있어요!


===================================================================================================


import { GameObject, Time, Vector3, Object } from "UnityEngine";

import { ZepetoScriptBehaviour } from "ZEPETO.Script";

import { Text } from "UnityEngine.UI";


export default class CoinCollision extends ZepetoScriptBehaviour {

public coin: GameObject;

private score: Text = GameObject.Find("Canvas/btnScore").GetComponent<Text>();

private rotationSpeed: float = 10;


// Update() {

// this.coin.transform.Rotate(

// new Vector3(this.rotationSpeed * Time.deltaTime, 0, 0)

// );

// }


OnTriggerEnter() {

//1.점수 올라감

let score = parseInt(this.score.text);

score += 5;

this.score.text = score.toString();

//2.코인 사라짐

Object.Destroy(this.coin);

}

}



취소
 공유
취소
댓글 0
댓글 알림
나의얼굴