์๋ ํ์ธ์~์ผ์ด์น์ ๋๋ค~
๋ฐฉ๊ธ ์ ์ ํฌ์คํ ํ์๋๋ฐ ๋๋ฌด ๊ธธ์ด์ง๋ ๊ฒ ๊ฐ์์ ๋๊ณ ๋ ํฌ์คํ ํ๋ค์ ใ ใ
์ง๋ ์๊ฐ์๋ ๋ฐฐ๊ฒฝํ๋ฉด ๋ฃ๊ณ ๋ ๋ ๋ง๋ค์ด๋ณด๊ณ ์ผ๋ฆญํฐ๋ ๋ฃ์ด์ ์์ง์ฌ๋ดค์ต๋๋ค.
๊ทธ๋ฐ๋ฐ ๋ฌธ์ ๊ฐ ํ๋์์์ฃ ? ๋ณดํต ํ์ดํ๋ฅผ ๋๋ฅด๊ณ ์์ผ๋ฉด ๊ณ์ ์ฐ์์ ์ผ๋ก ์์ง์ฌ์ค์ผ ํ๋๋ฐ ๊ทธ๋ ๊ฒ ๋์ง ์์๋ ๊ฑฐ์ฃ .
์, ๊ทธ ํด๊ฒฐ๋ฐฉ๋ฒ์ ์๊ฐ๋ณด๋ค ๊ฐ๋จํฉ๋๋ค.
์ฐ์ ์์ ๋ Player ์์ค๋ฅผ ๋ณด์ฌ๋๋ฆด๊ฒ์ ~
public class Player extends Actor {
private Sprite characterSprite;
boolean leftMove;
boolean rightMove;
float x;
Player(){
characterSprite = new Sprite(new Texture("player.png"));
characterSprite.setBounds(Gdx.graphics.getWidth()/2-100, 100,
Gdx.graphics.getWidth()/10, Gdx.graphics.getHeight()/5);
}
public Sprite getCharacterSprite(){
return characterSprite;
}
public void updateMotion(){
if ( leftMove ){
x = characterSprite.getX() - 5;
characterSprite.setX(x);
}
if ( rightMove ){
x = characterSprite.getX() + 5;
characterSprite.setX(x);
}
}
public void setLeftMove(boolean t){
if ( rightMove && t ) rightMove = false;
leftMove = t;
}
public void setRightMove(boolean t){
if ( leftMove && t ) leftMove = false;
rightMove = t;
}
}
setLeftMove์ setRightMove ๊ทธ๋ฆฌ๊ณ updateMotion์ด๋ผ๋ ๋ฉ์๋๊ฐ ์๋ก ์๊ฒผ๋ค์.
๊ทธ๋ผ ์ด๋ฒ์ CharacterProcess์ ์์ค๊ฐ ์ด๋ป๊ฒ ๋ฐ๋์๋์ง ๋ณผ๊น์??
@Override
public boolean keyDown(int keycode) {
System.out.println("keycode : " + keycode);
switch(keycode){
case 21:
player.setLeftMove(true);
break;
case 22:
player.setRightMove(true);
break;
}
return true;
}
@Override
public boolean keyUp(int keycode) {
switch(keycode){
case 21:
player.setLeftMove(false);
break;
case 22:
player.setRightMove(false);
break;
}
return true;
}
๋ค, ์ ์ฒ๋ผ keyUp ๋ฉ์๋๋ฅผ ์๋กญ๊ฒ ๊ตฌํํด์คฌ๊ณ ์ keyDown๋ฉ์๋๋ ๋ญ๊ฐ ๋๊ฒ ๊ฐ๋จํด์ก๋ค์ ๊ทธ์ตธ? ^-^
์ด๋ ๊ฒ ์์ ํ๋ฉด ํค ์ด๋ฒคํธ ์ฒ๋ฆฌ๋ ๋๋๊ฒ๋๋ค. ์? ์ด๊ฒ ๋ญ๋๊ตฌ์?
ํ๋ฒ ์์ค๋ฅผ ๊ฐ๋ตํ๊ฒ ์ค๋ช ๋๋ฆด๊ฒ์ ^-^ ์ ๋ ์น์ ํ ์ผ์ด์น๋๊น์ ใ ใ ใ
์, ์ผ๋จ ๊ฐ๋จํ๊ฒ ๋ฐ๋ CharacterProcess์์์ ์ฒ๋ฆฌ๋ถํฐ ํ๋ฒ ๋ณด์์ฃ .
์ผ์ชฝ ํ์ดํ ํค๊ฐ ๋๋ฆฌ๋ฉด
1. player.setLeftMove(true)๋ฅผ ํธ์ถํฉ๋๋ค.
2. setLeftMove(true)๊ฐ ํธ์ถ๋๋ฉด ์๋ ๋ก์ง์ ๋ฐ๋ผ๊ฐ๋๋ค.
- ๋ง์ฝ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋์ค์ด์๋ค๋ฉด rightMove๋ฅผ false๋ก ๋ณ๊ฒฝํฉ๋๋ค.
- ๋ฌด์กฐ๊ฑด leftMove๋ฅผ true๋ก ๋ณ๊ฒฝํฉ๋๋ค.
3. ๋
์ผ์ชฝ ํ์ดํ ํค๊ฐ ์ฌ๋ผ๊ฐ๋ฉด
1. player.setLeftMove(false)๋ฅผ ํธ์ถํฉ๋๋ค.
2. setLeftMove(false)๊ฐ ํธ์ถ๋๋ฉด ์๋ ๋ก์ง์ ๋ฐ๋ผ๊ฐ๋๋ค.
- if๋ฌธ์์ false์ && ์กฐ๊ฑด์ด ๋ง๋ฌผ๋ฆฌ๋ฉด์ if๋ฌธ์ ์คํ๋์ง ์์ต๋๋ค.
- ๋ฌด์กฐ๊ฑด leftMove๋ฅผ false๋ก ๋ณ๊ฒฝํฉ๋๋ค.
์ค๋ฅธ์ชฝ ํ์ดํ ํค๊ฐ ๋๋ฆฌ๊ฑฐ๋ ์ฌ๋ผ๊ฐ์ ๋๋ ๋์ผํ ๋ก์ง์ ๋ฐ๋ผ๊ฐ๋๋ค.
์, ์ฌ๊ธฐ์ ํ๋ ์ผ์ ํค๊ฐ ๋๋ ธ์ ๋ ์ผ๋ฆญํฐ์ ์ด๋์ ๊ฒฐ์ ์ง๋ boolean๊ฐ์ ๋ณ๊ฒฝํ๊ธฐ๋ง ํ๋ ์ผ์ ํฉ๋๋ค. ์ขํ๋ฅผ ๋ณ๊ฒฝํ ๊ฒ๋ ์๋๊ณ ์์ง ํ๋ฉด์ ๋ฟ๋ ค์ง๋ ๊ฒ์ด ์๋๋๋ค.
์ ๊ทธ๋ผ ๋ฉ์ธ ํด๋์ค์์๋ ๋ญ๊ฐ ์์ ์ด ๋๋์ง ํ๋ฒ ๋ณด์ค๊น์?
@Override
public void render () {
Gdx.gl.glClearColor(1, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
batch.begin();
batch.disableBlending();
batch.draw(background, 0, 0, 800, 480);
batch.enableBlending();
// let's draw ground image
batch.draw(groundTextureRegion, backgroundPos, 0, 800, 100);
if ( backgroundPos + 800 > 0 && backgroundPos + 800 < 800){
batch.draw(groundTextureRegion, backgroundPos + 800, 0, 800, 100);
}
// let's draw player
inputProcessor.getPlayer().getCharacterSprite().draw(batch);
batch.end();
updateScene();
inputProcessor.getPlayer().updateMotion();
}
์, ๋ฉ์ธ ํด๋์ค์์ ๋ณ๊ฒฝ๋ ๋ถ๋ถ์ render()๋ฉ์๋์ ๋ง์ง๋ง ์ค์ inputProcessor.getPlayer().updateMotion() ๋ฉ์๋๊ฐ ํธ์ถ๋๋ค๋ ๊ฒ์
๋๋ค. ์ ๊ฒ ๋ฌด์จ ๋ฉ์๋์๋์ง ์์์ ๋ณด์
จ๋์?
๊ทธ๋ฅ ์ง๋์น ๋ถ๋ค์ ์ํด์ ์๋ ๋ค์ ๋ณด์ฌ๋๋ฆด๊ฒ์.
public void updateMotion(){
if ( leftMove ){
x = characterSprite.getX() - 5;
characterSprite.setX(x);
}
if ( rightMove ){
x = characterSprite.getX() + 5;
characterSprite.setX(x);
}
}
์ด ๋ฉ์๋๋ ์์์ Playerํด๋์ค์ ์๋ก์ด ์ถ๊ฐ๋์๋ ๋ฉ์๋์ ๋๋ค.
์ฌ๊ธฐ์ ํ๋ ์ผ์ Player๊ฐ์ฒด๊ฐ ๊ฐ์ง๊ณ ์๋ leftMove์ rightMove ๋ถ๋ฆฌ์ธ ๊ฐ์๋ฐ๋ผ ์ผ๋ฆญํฐ์ ์ขํ๋ฅผ ๋ณ๊ฒฝํด์ฃผ๋ ์ผ์ ํฉ๋๋ค.
๋จ์ํ ์ขํ๋ง ๋ณ๊ฒฝํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ฉ์ธ ํด๋์ค์์ ์ด ์ผ๋ฆญํฐ๋ฅผ ๋ฟ๋ฆฌ๊ณ ์์ฃ .
์ด์ ์ด๋ ๊ฒ ์์ ๋ ์์ค๋ฅผ ์คํํด๋ณด์ธ์.
๋ฐฉํฅํค๋ฅผ ๋๋ฅด๊ณ ์๋ ๋์ ์ผ๋ฆญํฐ๊ฐ ๊ณ์ ์์ง์ ๋๋ค.
์, ๊ทธ๋ฆฌ๊ณ ์ ์๋ ์ผ์ชฝ ์ค๋ฅธ์ชฝ ๋ฐฉํฅ์ ๋ํด์ ์ผ๋ฆญํฐ๊ฐ ์คํฌ๋ฆฐ์์ ๋ฒ์ด๋ ์ ์๋๋ก ํ์๋๋ฐ ์ด๋ฒ์ ์์ ํ๋ฉด์ ๊ทธ๋ถ๋ถ์ด ๋น ์ก๋ค์.
ํ๋ฉด์์ ์ฌ๋ผ์ง์ง๋ ๋ชปํ๋๋ก ์ฌ๋ฌ๋ถ๋ค์ด ํ๋ฒ ์กฐ๊ฑด์ ๋ฃ์ด๋ณด์ธ์~~~ ^-^ ํํ~ ์์ ์ ๋๋ค~~~
๊ทธ๋ฆฌ๊ณ ์ ํ๊ธฐ๋ฅ์ด๋ ๋ญ ์ด๋ฐ๊ฒ๋ค์ ๋ฃ์ผ๋ฉด ์ฌ๋ฐ๊ฒ ์ฃ ? ใ ใ
๊ทธ๋ผ ์ค๋์ ์ด๋ง ์ค์ด๊ฒ ์ต๋๋ค.
๊ณ์ ์ฅ๋ง๋น๊ฐ ๋ด๋ฆฌ๋๋ฐ ๊ณฐํก์ด ์กฐ์ฌํ์๊ณ ์ฆํํ์ธ์~~ ใ ใ
์ด์ ์น์ ํ ์ผ์ด์น์์ต๋๋ค.