반응형

분류 전체보기 108

일러스트 - 펜 툴 스케치

1. 따라 그릴 이미지 가져오기 > Opacity 조절 > 그림 고정 (Ctrl + 2), 풀기(Ctrl + Alt + 2) 단축기 : 이미지 확대하기 (Z 키) 이미지 축소 (ALT 키 누른채로), 화면이동 (H 또는 Space bar 누른채로 드래그) 2. 따라 그리기 3. 색칠하기 Live Paint Mode - 그림 선택 > Object > Live Paint > Make 4. Live Paint Bucket Options 설정 - 아이콘 더블클릭 Live Paint Bucket 기능(K) 와 스포이드 기능 (I)

일러스트 2022.06.28

일러스트 - 막대사탕 그리기

1. Polar Grid Tool 선택 2. 크기 및 값 Concentric / Radial 설정 Concetric : 원형의 갯수 Radial : 원을 나누는 갯수 3. 색 칠하기 - Live Paint Bucket 선택 4. 비틀기 - Effect > Warp > Twist 5. 기준선 맞추기 - Object > Expand Appearance 6. 동그랗게 만들기 - Ellipse Tool 로 위에 원을 그리기 7. 불필요한 테두리 없애기 - Shape Builder Tool 기본적으로 합쳐지고, ALT 키를 누른 채로 원하는 영역을 클릭하면 그 영역은 삭제된다. 원을 치워 보면 동그랗게 원 모양으로 정리가 되었다. 8. 치운 원으로 그림자 넣기 - PathFinder 원을 하나 더 복제한 뒤, 조..

일러스트 2022.06.25

유니티 #8 - delay (코루틴, invoke)

씬 전환시 버튼음이 플레이 되자마자 완료되지 않은 상태로 씬 전환이 되어 어색할 때가 있다. 이 때 버튼음의 시간동안 딜레이를 준 다음에 다음 씬으로 넘어가게 한다. 유니티에서 딜레이를 줄 수 있는 방법은 코루틴과 invoke 가 있다. 코루틴 유니티에서 특정 코드가 반복적으로 실행되기 위해서는 Update문에 코드를 작성하면 되는데, 간혹 Update가 아닌 곳에서도 반복적으로 코드가 실행되어야할 필요가 있을 때가 있다. 이럴 때 코루틴을 사용하는 것이 매우 효과적이다. 또한, 업데이트문을 사용하면 원하든 원하지 않든 업데이트문이 매 프레임마다 계속 반복적으로 실행되지만, 코루틴을 사용한다면 자신이 필요한 순간에만 반복하고 필요하지 않을 때에는 전혀 사용하지 않음으로써 자원관리를 매우 효과적으로 할 수..

Unity 2022.06.06

유니티 #7 - Audio source

Audio resource를 등록하는 법 1. GameObject에 추가해서 사용하는 방법 1.1 Create Empty > Rename 1.2 Add component > Audio Source 1.3 Button object의 onClick 에 Audio source 등록 1.4 2. Scrpit에서 사용하는 방법 2.1 AudioManager inspector 생성 2.2 전체 audio를 관리하는 스크립트 생성 using System.Collections; using System.Collections.Generic; using UnityEngine; public class AudioManager : MonoBehaviour { public static AudioManager instance; pu..

Unity 2022.06.05

유니티 #6 - Time.deltaTime

Time.deltaTime 은 이전 프레임에서 현재 프레임으로 넘어올 때 걸린 시간을 측정한 것이다. 성능이 좋은 기기는 프레임이 넘어가는 속도가 빠를 것이고, 성능이 나쁜 기기는 프레임이 넘어가는 속도가 느리게 된다. 기기 간의 성능 차이를 일정하게 맞추기 위해 속도 값에 해당 값을 곱해 동일한 속도를 낼 수 있게 처리할 수 있다. 적용 예) transform.Translate(0, speed *-0.1f * Time.deltaTime, 0);

Unity 2022.06.04

유니티 #4 - 게임 제작 순서

1. 화면에 놓일 오브젝트를 모두 나열한다. 2. 오브젝트를 움직일 수 있는 컨트롤러 스크립트를 정한다. 3. 오브젝트를 자동으로 생성할 수 있도록 제너레이터 스크립트를 정한다. 4. UI를 갱신할 수 있도록 감독 스크립트를 준비한다. 1. 화면에 놓일 오브젝트를 모두 나열한다. 2. 오브젝트를 움직일 수 있는 컨트롤러 스크립트를 정한다. >> player 와 bomb 2.1 player를 애니메이션으로 만든다. 2.2 키를 조작해 플레이어 움직이기 > BoyController script 생성 using System.Collections; using System.Collections.Generic; using UnityEngine; public class BoyController : MonoBehavi..

Unity 2022.06.01

유니티 #2 <Rigidbody, Collider>

충돌 기능을 위한 RigidBody, Collider 에 대해 살펴 보자. Rigidbody 는 게임 오브젝트에 물리적인 움직임을 시키는 컴포넌트이다. 물리적인 물체는 벽에 닿으면 거기서 나아가지 않게 되거나 다른 물체와 충돌하면 튕겨서 되돌아오거나 공중에 떠 있을 때는 중력의 영향을 받아 낙하하곤 한다. Collider는 게임 오브젝트에 충돌을 행하는 형태를 설정하는 컴포넌트이다. 예를 들어 2D 게임이면 여러가지 형태로 그려진 그림이 게임 오브젝트가 된 것인데, 이 그림의 어디가 충돌할 것인가 를 지정하는 것이 collider 이다. collider 의 형태는 Box Collider 2D, Circle Collider 2D, Capsule Collider 2D, Polygon Collider 2D 등..

Unity 2022.05.30

유니티 #1 <배경, 캐릭터, 애니메이션, CS 스크립트 적용>

1. Unity 에 배경과 캐릭터 이미지를 넣음. 2. BlackBoy 캐릭터는 BlackBoyWalk 라는 애니메이션을 등록. 3. 키 이벤트 등으로 움직을 처리하기 위해 C# script 생성. using System.Collections; using System.Collections.Generic; using UnityEngine; public class WalkToRight : MonoBehaviour { public float speed = 1; public int maxCount = 400; int count = 0; bool flipFlag = false; bool leftFlag = false; float vx = 0; float vy = 0; // Start is called before..

Unity 2022.05.29

제네릭

제네릭이란 형식 타입 혹은 임의 타입입니다. 자바나 코틀린 같은 대부분 프로그래밍 언어는 변수(혹은 객체) 타입을 명확하게 선언해야 합니다. String, Int 등의 타입을 명시해야 하는데, 때로는 클래스, 함수, 변수 등을 선언할 때 타입을 예측할 수 없거나 하나의 타입으로 고정할 수 없는 경우가 있습니다. 그렇다고 타입을 선언하지 않을 수는 없습니다. 이때 사용하는 것이 제네릭입니다. 클래스나 함수, 변수 등을 선언할 때 제네릭으로 형식타입을 선언하고, 실제 이용할 때 정확한 타입을 부여합니다. 제네릭을 가장 쉽게 볼 수 있는 곳이 컬렉션 타입입니다. val array = arrayOf("Kim", 10, true) 배열에 대입하는 데이터 타입은 문자열이나 숫자 등 다양할 수 있습니다. 그런데, 코..

Kotlin 2022.05.08

data class

data class 란 특별한 로직의 함수 없이 데이터만 포함할 수 있는 VO(Value-Object) class 를 의미합니다. data class는 다음의 조건에 맞게 선언해야 합니다. 주 생성자(primary constructor)를 선언해야 하며, 주 생성자의 매개변수는 최소 하나 이상이어야 한다. 모든 주 생성자의 매개변수는 var 혹은 val 로 선언해야 한다. data class는 abstract, open, sealed, inner 등의 예약어를 추가할 수 없다. 위 조건에 맞지 않는 경우의 예를 보겠습니다. data class 가 유용한 것은 data class 에 선언한 데이터와 관련된 다양한 기능을 함수로 자동으로 제공하기 때문입니다. equals() / hashCode() --> A..

Kotlin 2022.05.06

연산자 함수, 오버로딩

코틀린에서는 연산자(단항 연산자, 증감 연산자, 산순연산자, in 연산자, 인덱스 접근 연산자, 호출 연산자, 복합 대입 연산자, 논리 연산자, 비교 연산자 등)마다 대응하는 함수가 있습니다. 연산자 대응하는 메소드 주의사항 +x x.unaryPlus() -x x.unaryMinus() !x x.not() x + y x.plus(y) x - y x.minus(y) x * y x.times(y) x / y x.div(y) x % y x.rem(y) ++x x.inc() x는 할당 가능해야 함 x++ x.inc() x는 할당 가능해야 함 --x x.dec() x는 할당 가능해야 함 x-- x.dec() x는 할당 가능해야 함 x == y x.equals(y) x != y !(x.equals(y)) x < y..

Kotlin 2022.05.05

위임자 Delegates (observable, vetoable )

디자인 패턴에서 Delegate Pattern이란 어떠한 기능을 자기 자신이 처리하지 않고 다른 객체에 일을 위임시켜 그 객체가 일을 처리하게끔 하는 것입니다. 코틀린의 Delegates를 활용하면 여러 가지 일을 간단하게 처리할 수가 있습니다. observable 프로퍼티 값이 변경되는 순간을 감지하는 방법이 있습니다. 코틀린에서는 프로퍼티 값이 변경되는 순간, 개발자가 준비한 코드를 실행 할 수 있습니다. Delegates.observable() 코드를 보면 initialValue와 onChange 함수를 인자로 사용됩니다. public inline fun observable(initialValue: T, crossinline onChange: (property: KProperty, oldValue:..

Kotlin 2022.05.05

전개 연산자 *

코틀린에서는 배열 데이터를 단순 나열할 때 사용하는 전개연산자가 있습니다. 아래와 같이 사이즈가 10인 배열이 있고, 각 배열의 값을 array0[index] 값으로 하나씩 옮겨닮을 때 사용됩니다. val array0 = Array(10) { it -> it * 2 } val list0 = listOf(*array0) print(list0) 출력값 : [0, 2, 4, 6, 8, 10, 12, 14, 16, 18] 전개 연산자를 사용자 정의 함수에 사용할 수 있습니다. 전개 연산자로 호출할 함수는 매개변수를 vararg로 선언해야 합니다. 함수 정의 fun printArray(vararg a:Any) { val iterator = a.iterator() while(iterator.hasNext()) { ..

Kotlin 2022.05.05
반응형