# Cocos creator ๋ฐฐ์›€ ์ผ์ง€


## Node ์›€์ง์ž„ ๊ตฌํ˜„

Cocos creator์—์„œ Node๊ฐ€ ์›€์ง์ด๋Š” ๊ฒƒ์„ ๊ตฌํ˜„ํ•ด๋ณด์•˜๋‹ค.


### ๊ธฐํƒ€

Typescript๋Š” ํ•จ์ˆ˜๋ฅผ ์ฝ”๋”ฉํ•  ๋•Œ ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ํƒ€์ž…์„ ์ •ํ•ด์ฃผ์—ฌ์•ผ ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด


```js

function(parameter : type) {

return parameter;

};

```

์ด๋ ‡๊ฒŒ ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ํƒ€์ž…์„ ์ž…๋ ฅํ•ด์ฃผ์–ด์•ผ ๋‚˜์ค‘์— ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์—๋Ÿฌ ์—†์ด ์ž‘๋™ํ•œ๋‹ค.


### ์ž…๋ ฅ์„ ๊ฐ์ง€ํ•˜๋Š” ์ด๋ฒคํŠธ

ํŒจํ‚ค์ง€ ๋Š” `cc`์—์„œ ๊ฐ€์ ธ์˜ด.


```js

import {systemEvent} from 'cc'


...


systemEvent.on(SystemEventType.KEY_DOWN, this.function, this)

...

```


https://docs.cocos.com/creator/1.9/api/en/classes/SystemEvent.html


`systemEvent.on()`์ด ํ‚ค๋ณด๋“œ๋‚˜ ๋งˆ์šฐ์Šค, ํŒจ๋“œ์˜ ํ„ฐ์น˜ ๋“ฑ์—์„œ ๋ณด๋‚ด๋Š” ์ž…๋ ฅ ์ด๋ฒคํŠธ๋ฅผ ๊ฐ์ง€ํ•œ๋‹ค.


`SystemEventType.EVENT`์—์„œ ์–ด๋–ค ๊ฐ’์„ ์ž…๋ ฅํ•  ๊ฒƒ์ธ์ง€ ์ •ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ํ‚ค๋ฅผ ๋ˆ„๋ฆ„, ๋•œ, ๋งˆ์šฐ์Šค ๋ˆ„๋ฆ„, ๋•œ, ํ„ฐ์น˜ ๋ˆ„๋ฆ„ ๋“ฑ.


`this.function`์—์„œ ์ž…๋ ฅํ‚ค๋ฅผ ๋ฐ›๊ณ  ๋‚œ ํ›„ ์‹คํ–‰ ์‹œํ‚ฌ ํ•จ์ˆ˜์˜ ์ด๋ฆ„์„ ๋„ฃ๋Š”๋‹ค.


`this`๋ฅผ ๋„ฃ์–ด์ฃผ์–ด bind๋ฅผ ํ•ด์•ผ ์ด๋ฒคํŠธ๊ฐ€ ์ž‘๋™ํ•จ.


### Node์˜ ๋ฒกํ„ฐ ์ขŒํ‘œ ์ด๋™


```js

import { Vec } from `cc`


private _curPos = new Vec3();

private num, num2, num3;


this.node.getPosition(this._curPos)

Vec3.add(this._curPos, this._curPos, new Vec3(num, num2, num3));

this.node.setPosition(this._curPos);

```


`this.node.getPosition(Vec3())`๋กœ Node์˜ ์ €์žฅ๋˜์–ด์žˆ๋Š” ๋ฒกํ„ฐ ๊ฐ’์„ ๋ถˆ๋Ÿฌ์™€์ค€๋‹ค. ๋งŒ์•ฝ ๋ถˆ๋Ÿฌ์™€์ฃผ์ง€ ์•Š์•˜์„ ๋•Œ ํ‚ค๋ฅผ ์ž…๋ ฅํ•ด ๋…ธ๋“œ๋ฅผ ์›€์ง์—ฌ๋ณด์•˜๋Š”๋ฐ ์ฒซ๋ฒˆ์งธ ํ•œ๋ฒˆ ์ž…๋ ฅ์ด ๋‘๋ฒˆ ์ž…๋ ฅ๋˜์—ˆ๋‹ค.


`Vec3.add(curPos, tarPos, addedPos)`๋กœ ์ด๋™์‹œํ‚ฌ ์ขŒํ‘œ๋ฅผ ์ž…๋ ฅํ•œ๋‹ค. ๊ฐ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ๋ฒกํ„ฐ๋ฅผ ๋„ฃ์–ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. ์ฒซ๋ฒˆ์งธ์™€ ๋‘๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ํ˜„์žฌ ์ขŒํ‘œ๊ฐ’์„ ๋„ฃ์—ˆ๋Š”๋ฐ ๋‘ ๊ฐœ์˜ ์ฐจ์ด์ ์„ ์•„์ง ์ดํ•ด ๋ชปํ•จ. 3๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ ๋ฒกํ„ฐ์˜ x, y, z ๊ฐ’์„ ๊ฐ๊ฐ ์ž…๋ ฅํ•ด ์–ผ๋งˆ๋‚˜ ์ด๋™ํ• ์ง€ ์ •ํ•œ๋‹ค.


`this.node.setPosition(curPos)`๋กœ ์ตœ์ข…์ ์œผ๋กœ ์ด๋™ํ•  ๋ฒกํ„ฐ ๊ฐ’์„ ์ €์žฅํ•ด์ค€๋‹ค.


### ์›€์ง์ž„์„ ์‹œํ–‰ํ•  ํ•จ์ˆ˜์˜ ์œ„์น˜

์›€์ง์ด๋Š” ํ•จ์ˆ˜ `move()`๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•˜์ž. ์›€์ง์ž„์€ ํ‚ค๋ณด๋“œ์˜ ์ž…๋ ฅ์„ ๊ฐ์ง€ํ•˜๊ณ  ์‹œ๊ฐ„์ด ํ๋ฅด๋Š” ๋™์•ˆ ์Šคํฌ๋ฆฝํŠธ์˜ ์ƒํƒœ๋ฅผ ์—…๋ฐ์ดํŠธ ํ•ด์ฃผ๋Š” `update()`์— ์˜ํ•ด ๋ฒกํ„ฐ์˜ ์ขŒํ‘œ ๊ฐ’์ด ๋ณ€ํ•œ๋‹ค. ์ฆ‰,


1. ํ‚ค ์ž…๋ ฅ๋˜์–ด ํ•จ์ˆ˜ ์‹คํ–‰

2. `update()`ํ•จ์ˆ˜์— ์˜ํ•ด ์‹œ๊ฐ„๋งˆ๋‹ค ํ•จ์ˆ˜ ์‹คํ–‰


์ด๋ ‡๊ฒŒ ๋‘ ๊ณณ์—์„œ ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋˜๋Š”๋ฐ ํ•จ์ˆ˜๊ฐ€ ์‹œํ–‰๋˜๋Š” ์œ„์น˜๋Š” ์–ด๋А ๊ณณ์„ ํ•ด๋„ ์ƒ๊ด€ ์—†๋‹ค.


๋‹จ, `systemEvent.on(SystemEventType.KEY_DOWN, this.function, this)` ์ด๋ฒคํŠธ ๊ฐ์ง€์—์„œ๋Š” ์–ด๋–ค ํ‚ค๊ฐ€ ์ž…๋ ฅ๋˜์—ˆ๋Š”์ง€๋ฅผ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ฐ›๊ณ 


`update(deltaTime : number)`์—์„œ๋Š” ์‹œ๊ฐ„ ํ๋ฆ„์— ๋”ฐ๋ฅธ ๋ธํƒ€ ์‹œ๊ฐ„ ๊ฐ’์„ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ฐ›๋Š”๋‹ค.


๊ทธ๋ž˜์„œ ์–ด๋–ค ํ‚ค ๊ฐ’์„ ๋„ฃ์–ด ์–ด๋А ์‹œ๊ฐ„ ๋งŒํผ n๋งŒํผ์˜ ์ขŒํ‘œ๊ฐ€ ์ด๋™์ด ๋˜์—ˆ๋‹ค๋ฅผ ๊ณ„์‚ฐํ•˜๋ ค๋ฉด ๋‘ ํŒŒ๋ผ๋ฏธํ„ฐ ๋ชจ๋‘๋ฅผ ๊ฐ’์œผ๋กœ ๊ฐ€์ ธ๊ฐ€์•ผ ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ๋ฏธ๋ฆฌ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜์—ฌ ์ด๋ฒคํŠธ๊ฐ€ ์‹คํ–‰๋˜์—ˆ์„ ๋•Œ ์ €์žฅํ•œ๋‹ค.


```js

private _keycode;


onKeyup(e: EventKeyboard) {

this._keycode = e.keyCode;

}


update(deltaTime: number) {

// ํ‚ค ๊ฐ’์˜ ํƒ€์ž…์€ number์ง€๋งŒ ์˜ˆ๋ฅผ ๋“ค๊ธฐ ์œ„ํ•ด string์œผ๋กœ ํ•จ

if (this._keycode = 'left') {

movePostionBy(deltaTime);

}

}

```



์ฝ”์ฝ”์Šค๋กœ๋Š” ์ฒซ ํ”„๋กœ์ ํŠธ์ด๊ณ  ๊นƒ์œผ๋กœ ๊ด€๋ฆฌํ•  ๊ฑฐ์•ผ. ๊ทธ๋Ÿฐ๋ฐ ์šฉ๋Ÿ‰์ด ๋งŽ์€ ์—์…‹๋“ค์€ ์–ด๋–ป๊ฒŒ ๊ด€๋ฆฌํ•จ? ์ผ๋‹จ์€ ์—์…‹ ํด๋” ์•ˆ์— src ํด๋” ๋งŒ๋“ค์–ด์„œ ๊ฑฐ๊ธฐ ์•ˆ์— ๋ณด๊ด€ํ•˜๊ณ  ๊นƒ์—๋Š” ๋„ฃ์–ด๋‘์ง€ ์•Š๊ฒŒ๋” ํ–ˆ์Œ.

์•ž์œผ๋กœ ๋ฐฐ์›Œ์„œ ๊ธฐ๋กํ•˜๋ฉด์€ ๋งŒ๋“ค์–ด๋†“์€ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— ๋ฌธ์„œ๋กœ ์ €์žฅํ•  ๊ฑฐ์•ผ


์•„๋ž˜๋Š” ํ”„๋กœ์ ํŠธ ๊นƒ ์ฃผ์†Œ

TestProject/DEVNOTE.md at master ยท jacobkim9881/TestProject (github.com)