Unity 기초수업 2일차.
정리차원에서 전체 코드가 아닌 꼭 필요한 부분만 기입하였음. ( 아래내용만 그대로 쓰면 구현이 안된다. 핵심만 적은것 )
- script -
Transform
// Transform 타입의 객체의 주소값을 저장하는 참조변수
Public Transform transRef;
//현재 게임오브젝트가 렌더링 되기 바로전에 매번 호출되는 이벤트 메소드
void Update
//회전공식
//Transform.Rotate(방향축 벡터 (vector3) * 속도(float)*Time.deltaTime)
(*찐문과를 위한.. 벡터란?? 거리+방향/ 크기+방향 , 2차원 또는 3차원으로도 존재.)
- 언리얼 배울떄 회전공식이 매우 중요함을 배웠고, sw역량 테스트 준비할때도 이부분이 중요하다고 배웠다. 그리고 인공지능.. 머신러닝 배울때도 관련이 있는듯하니 제대로 알고가면 좋을것같아서 링크를 첨부하였다. (링크는 아래에! - )
//속도 변수 생성
public float speed;
- unity -
Unity 안에서 Text 생성을 한다는것은 Text 클래스를 사용한다는것.
class in UnityEngine.UI
이안의 text를 수정한다하면
Text.text 를 수정한다는것.
public string text
계산기 만들기
1. script 폴더에 CalcComponent 추가
2. empty object 로 CalcGameobject 추가
3. 코드파일 Calcomonent (script) 를 유니티 상에서 script 연결해주기
4. 코드 작성
5. OnCalButton 메소드의 인자에 int 를 추가해서
switch 문에 int 인자에 따른 + , - , / , % 에 대한 0,1,2,3 등의 값을 준뒤
유니티로 돌아가서 각 버튼 UI요소의 onclick 이벤트 속성에 해당 0 ,1, 2, 3 의 값을 설정해준다.
//버튼을 누를때 실행될 코드를 가진 커스텀 이벤트 메소드 정의
public void OnSumButtonClick(int type)
{
switch(type)
{
case 0:
result = val1+val2;
break;
case 1:
result = val1-val2;
break;
case 2:
result = val1/val2;
break;
case 3:
result = val1%val2;
break;
}
}
---------------------------------------------------------------
//item 갯수를 카운트 하려면?
int itemPickCount = 0; // 카운터의 총합을 구할 변수 선언
Debug.Log("유저의 현재 보유 아이템 갯수:"+ itemPickCount);
Debug.Log("유저가 아이템을 획득함);
itemPickCount +=1 ; // 반대 계산 하려면 itemPickCount -=1;
Debug.Log("유저의 현재 보유 아이템 갯수:"+ itemPickCount);
Debug.Log("유저가 아이템을 획득함);
itemPickCount++ ; // itemPickCount = itemPickCount+1;
Debug.Log("유저의 현재 보유 아이템 갯수:"+ itemPickCount);
Debug.Log("나쁜 유저가 저를 pvp하고 아이템을 하나 뻇어갔어요.");
itemPickCount--;
Debug.Log("유저의 현재 보유아이템 갯수: "+itemPickCount);
------------------------------------------------------
[ 캐릭터 움직임 만들기 ]
1. movement 이름 으로 scirpt 파일생성
2. 코드작성
3. unity 상의 scirpt 속성 trans요소 에 플레이어 연결
4. speed 설정 (1이상)
public float speed;
void Start()
{
void Update()
{
// 좌우 방향키 값 전달받기 ( 좌 : -1 , 우 : 1 )
float h = Input.GetAxisRaw("Horizontal");
float v = Input.GetAxisRaw("Vertical");
}
//Debug.Log("좌우 이동값 : "+h+", 상하 이동값 : "+v);
//방향 벡터 생성
//오른쪽 -> 1, 0, 0
//왼쪽 -> -1, 0, 0
//위쪽 -> 0, 1, 0
//방향 객체 생성(구조체)
Vector3.direction;
direction.x = h;
direction.y = v;
direction.z = 0;
//이동공식
//Transform.Translate(방향*속도*Time.deltaTime)
//trans.Translate(direction * speed * Time.deltaTime);
[ 캐릭터가 아이템과 충돌했을때 이벤트 생성 ]
//Collision 매개변수 : 현재 충돌된 게임오브젝트의 Collision 컴포넌트 참조
private void OnCollisionEnter2D(Collision2D collision)
{
Debug.Log("캐릭터가 무언가랑 충돌함")
//Destory(게임오브젝트 참조) - 게임오브젝트 파괴, 아이템 파괴
Destory(collsiion.gameObject);
}
// Time.deltaTime 이란?
두 유저의 이동속도가 같아지도록하는것.
Time.deltaTime - 전프레임이 완료 되기까지의 시간.
FPS - frames per second : 1 초당 프레임수
1FPS : 1초에 1개를 찍어냄
1000FPS : 1초에 1000개를 찍어냄
10FPS - 한프레임당 1/10초, 한프레임당 1m 이면 1초당 0.1m
20FPS - 한프레임당 1/20초, 한프레임당 1m 이면 1초당 0.05m
[매끄러운 정도]
10FPS < 20FPS
두개의 속도는 = 같음.
// 유니티의 생명주기
Reset : 오브젝트 생숭후 객체의 속성 초기화
Awake : Start 함수전에 호출 됨. 비활성화 상태에서도 호출가능.
Start 함수는 활성화 상태일때만 호출. 초기화 순서를 정함.(Corountine 사용불가)
OnEnable : 인스펙터뷰에서 체크, 오브젝트를 활성화 할때마다 호출
Start : Update 함수가 호출되기전에 한번만 호출. 활성화 상태일때 호출
|
FixedUpdate : 물리엔진 사용시 사용. 일정시간 간격으로 규칙적으로 호출, 힘발생. Default 0.02초.
OnTriggerXXXX
OnCollisionXXX
|
Update : 프레임마다 호출되는 함수. 게임의 핵심 로직에 사용. 스크립트가 활성화 되있는 상태에서 사용됨. 주기x
LateUpdate : 모든 업데이트 함수가 호출 된 후 호출. 카메라 이동로직에 많이 사용.
|
OnDisable : 게임 오브젝트 or 스크립트가 비 활성화 되었을떄 호출 (Corountine 사용불가)
OnDestroy : 오브젝트 마지막 프레임이 업데이트 된 후 실행. (Object.Destory 또는 Scene 종료 시)
OnApplicationQuit : 응용 프로그램 종료 전에 모든 오브젝트에서 호출됨. 에디터의 경우 플레이모드 중지시.
-----
mini project
[아이템과 캐릭터 충돌]
Player(캐릭터)
- 기본생성해서 화면 끌어다 넣으면 Inspector 창에 Transform 과 Sprite Renderer 가 생성되있다.
- Movement 스크립트 : 캐릭터 이동에 대한 것을 스크립트 파일로 생성해서 Unity 상에서 Addcomponent 로 Movement.cs 를 추가해준다. 이때 Movement 스크립트 옵션란에서 trans 대상란에 player 캐릭터를 연결해주어야 캐릭터 이동이 가능하다.
- ItemPickup 스크립트그리고 ItemPickup 스크립트 파일을 생성해서 아이템과 마주쳤을때의 상황에 대한 스크립트 문을 작성해준다.
- Rigidbody2D - 물리엔진(중력,힘) 영향 / Rigidbody는 3d 로 프로젝트 생성시 사용. 콜라이더가 없으면 충돌 여부 판단이 불가능.
- CircleCollider2D - 충돌영역 설정(서클형태) , Rigidbody 와는 항상 세트.
item(충돌할 아이템)
-CircleCollider2D
itemPickup.cs 에는 기존 스크립트 기본생성되는 구문 밑에 아래를 추가하면 된다.
private void OnCollisionEnter2D(Collision2D collision)
{
Destroy(collision.gameObject); 을
}
Canvas(UI요소에서의 캔버스)
- EventSystem - 캔버스 생성시 같이 생성됨.
- render Camera 로 Main Camera 설정.
- 점수판 : text를 추가해서 count 로 이름을 바꿔준후 박스 크기/ 글자 스타일 설정
--
'VR XR Development > Unity' 카테고리의 다른 글
BIFAN X Unity Short Film Challenge 2021 (0) | 2021.08.23 |
---|---|
UNITY. CLASS #01 _ 0415 (0) | 2021.06.13 |
댓글