본문 바로가기

728x90
반응형

유니티

(23)
[유니티] 이미지 반전 (transform.localScale) transform.localScale transform.localScale 을 이용하면 오브젝트의 이미지를 확대, 축소 시키는 것이 가능하다. transform.localScale 의 값은 벡터로 설정되어 있어서 이 값을 원하는대로 바꿔주면 된다. 만약 이미지를 4배 크게 하고 싶다면 transform.localScale = new Vector2(2, 2); 라고 작성하면 된다. 따라서 아래 코드처럼 작성한다면 w 키를 입력받았을 때 오브젝트의 크기가 4배로 커진다. 그러나 localScale 은 벡터값일 뿐이므로 w 키를 여러 번 누른다고 해서 계속 커지지는 않는다. 벡터값은 변함없이 (2, 2) 이기 때문이다. void Update() { if (Input.GetKey(KeyCode.W)) trans..
[유니티/연습 프로젝트] 캐릭터 이동 소개 유니티 개발을 시작하기 앞서 공부를 위해 유니티 에셋스토어의 무료 에셋을 활용하였다. 컴포넌트 적용 게임 캐릭터인 Player 오브젝트에는 Rigidbody 2D 와 Box Collider 2D 컴포넌트를 적용해주었고 바닥에 해당되는 Ground 오브젝트에는 Box Collider 2D 컴포넌트만을 적용하였다. 바닥에도 Rigidbody 2D 컴포넌트를 적용하면 물리엔진의 영향을 받아 중력으로 인해 바닥이 게임화면 밖으로 떨어진다. 캐릭터 이동 캐릭터의 이동을 위해 좌, 우 화살표 키를 입력 받았을 때 transform.Translate 함수를 사용하여 오브젝트를 이동 시켰다. if (Input.GetKey(KeyCode.RightArrow)) transform.Translate(0.002f, 0,..
[유니티] GetComponent, AddForce AddForce Rigidbody 컴포넌트에는 AddForce 라는 이벤트함수가 내장되어 있다. AddFroce 메서드의 기능은 좌표를 입력받으면 해당하는 좌표의 값과 방으로 오브젝트에 힘을 가한다. 이 오브젝트를 스크립트에서 사용하기 위해서는 GetComponent 함수를 사용하여 컴포넌트를 불러와야 한다. void Update() { if (Input.GetKeyDown(KeyCode.LeftAlt)) GetComponent().AddForce(new Vector2(0, 500)); } 이 때 Rigidbody2D 를 여러 번 호출할 것을 예상하여 컴포넌트를 미리 불러오는 것도 가능하다. public class PlayerMove : MonoBehaviour { // Start is called be..
[유니티] 물리엔진, 충돌 (Rigidbody, Collider, OnCollisionEnter) 물리엔진 유니티는 물리엔진이 내장되어있어서 컴포넌트의 형태로 이를 제공하고 있다. 이를 이용해 우리는 물리현상을 직접 구현하지 않고 컴포넌트를 통해 사용할 수 있다. 계산비용 유니티에 내장되어있는 물리엔진은 계산 비용이 높다. 0.02초에 한번씩 호출하여서 물리 연산이 중요하지 않으면 이를 조정하여 최적화 하는 것도 가능하다. Edit - Project Settings - Time - Fixed Timesetp 에서 이를 조정할 수 있다. Rigidbody rigidbody 컴포넌트를 사용하면 해당 오브젝트는 유니티 물리 엔진의 영향을 받게 된다. 오브젝트에 컴포넌트를 추가하고 싶으면 Hierarchy 창에서 오브젝트를 선택한 후 Inspector 창에서 Add Component 를 눌러서 원하는 컴포넌..
[유니티] 오브젝트의 좌표 (transform.position) 오브젝트의 좌표 transform 클래스의 position 프로퍼티를 이용하여 오브젝트의 좌표를 구할 수 있다. ​ 스크립트를 오브젝트에 할당해 준 후 아래 코드를 실행시켜주면 오브젝트의 좌표가 출력될 것이다. using System.Collections; using System.Collections.Generic; using UnityEngine; public class NewBehaviourScript : MonoBehaviour { // Start is called before the first frame update void Start() { Debug.Log(this.transform.position); } // Update is called once per frame void Update() ..
[유니티] 오브젝트의 이동 (transform.Translate, transform.Rorate) 오브젝트 이동 메서드 transform.Translate() 메서드를 이용하여 오브젝트를 이동시킬 수 있다. ​ 아래 코드를 오브젝트에 적용시킨 후 실행시키면 해당 오브젝트가 우측으로 움직이는 것을 볼 수 있다. using System.Collections; using System.Collections.Generic; using UnityEngine; public class NewBehaviourScript : MonoBehaviour { // Start is called before the first frame update void Start() { } // Update is called once per frame void Update() { this.transform.Translate(0.01f,0,..
[유니티] 키보드, 마우스 입력 처리 함수 Input Class 유니티에서 제공하는 Input 클래스를 이용하여 키보드, 마우스의 입력을 받을 수 있다. 키보드 입력 Input 클래스의 GetKey 메서드를 사용하면 해당 키가 눌렸을 때 True 값을 반환받을 수 있다. ​ GetKey 메서드는 키가 눌려있는 동안 True를 반환하고 GetKeyDown 메서드는 키가 눌릴 때 True를 반환하고 GetKeyUp 메서드는 키를 뗄 때 True를 반환한다. ​ 위 메서드들은 해당하는 상황이 아닐 때에는 항상 False 를 반환한다. ​ 따라서 아래 코드를 실행시켜보면 'w' 를 누를 때에는 True 가 출력되며 그렇지 않을 때에는 False 가 출력된다. using System.Collections; using System.Collections.Ge..

728x90
반응형