안드로이드+드론 제작
유니티엔진으로 만든 2D게임 분석하기_4
김일국
2020. 12. 12. 17:18
유니티에디터에서 오브젝트를 계층구조(아래화면)에 등록하지 않고, Instantiate함수로 오브젝트를 복제해서사용.
지난시간에 만든 Player스프라이트2D오브젝트를 에셋에 프리펩으로 등록 후
등록한 프리펩을 빈 오브젝트(ObjectSpawner) 생성 후 현재 C#스크립트항복의 Player속성값으로 등록(아래)
위 에서 추가된 C#스크립트 ObjectSpawner.cs (아래)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ObjectSpawner : MonoBehaviour
{
//유니티 IDE에서 빈 오브젝트(ObjectSpawner) 생성 후 c#파일 생성
//이후 지난시간에 만든 Player스프라이트2D오브젝트를 에셋에 프리펩으로 등록
//위 등록한 프리펩을 빈 오브젝트(ObjectSpawner) 생성 후 현재 C#스크립트항복의 Player속성값으로 등록
[SerializeField]
private GameObject Player;
// Start is called before the first frame update
void Awake()
{
//1.Instantiate(Player);//Palyer오브젝트 복사
//2.오브젝트 복사 옵션(오브젝트명, 위치, 회전정보);
Instantiate(Player, new Vector3(3, 3, 0), Quaternion.identity);
//3.오브젝트 회전값 쿼터니온으로 설정(오일러각도Euler값)
Quaternion rotation = Quaternion.Euler(0, 0, 45);
//4.방금 생성된 오브젝트의 복제정보를 가지고, 설정하기
GameObject clone = Instantiate(Player, Vector3.zero, rotation);
//오브젝트 이름 변경
clone.name = "NewPlayer";
clone.GetComponent<SpriteRenderer>().color = Color.red;
//방금 생성된 게임 오브젝트의 위치 변경
clone.transform.position = new Vector3(-10, -3, 0);
//복제된 오브젝트 크기변경
clone.transform.localScale = new Vector3(2, 2, 1);
}
}