강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

2403docB님의 프로필 이미지
2403docB

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진

Resource Manager

컴포넌트 값은 바뀌고있는데 게임화면에서는 움직임이 없는 경우는 어떤 경우 인가요?

해결된 질문

작성

·

242

0

저번 질문에 답변해주신대로 따로 파일을 만들어서 스크립트를 Prefab 파일에 컴포넌트 했는데, 컴포넌트 Rotation의 Y값은 바뀌고있는데 게임화면에서는 움직임이 없습니다;;

[CoinRotate]

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CoinRotate : MonoBehaviour
{
    void Update()
    {
        transform.Rotate(new Vector3(0.0f, Time.deltaTime * 100f, 0.0f));
    }
}

-----------------------------------------------------

[PrefabTest.cs]

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PrefabTest : MonoBehaviour
{
    GameObject coin;

    void Start()
    {
        coin = Managers.Resource.Instantiate("Coin");
        Destroy(coin, 3.0f);
    }

}

답변 1

1

Rookiss님의 프로필 이미지
Rookiss
지식공유자

안녕하세요
어제 답변에 약간 오해의 소지가 있었던 것 같네요.
[혹시 PrefabTest에 transform.Rotate를 하신 것이 아닌가요?] 라고 했는데
[PrefabTest에 붙이면 안 됩니다]의 의미로 여쭤본거였습니다.

우선 Y값은 바뀌고 있다고 하셨으니 절반의 성공이긴 한데, 왜 변화가 없을까요?
게임 화면에서 아무런 움직임이 없는 이유는,
현재 transform Y 값이 변하고 있는 객체가
Coin이 아니라 [PrefabTest]라는 보이지도 않는 투명한 객체이기 때문입니다.

따라서 새로 만드신 Coin을 회전하려면 다음과 같은 방법을 사용하면 됩니다.

방법1) CoinRotate를 [PrefabTest]가 아니라 Coin의 프리팹에다 붙인다

방법2) PrefabTest Update에서 coin을 직접 조종한다.

위와 같이 테스트를 해보시기 바랍니다.

그리고 참고로 처음할 땐 저런 부분들이 원래 헷갈리는게 당연한거니
꾸준한 의문을 갖고 헤딩을 해보시기 바랍니다.

감사합니다.

2403docB님의 프로필 이미지
2403docB

작성한 질문수

질문하기