지난번 포스팅에 덧붙여서 좀더 게임답게 만들어보겠다.




1. 적총알 하나 추가 (귀찮아서 일단 하나ㅋㅋㅋ)

2. 충돌로직 추가(뱅기가 총알 맞는지 계산)

3. Enter키로 게임시작

4. 종료시 경과시간 기록보여주기


충돌로직은 원과 원으로 검사하며,

피타고라스의 정리(아군비행기크기제곱 + 공의크기제곱 = 두사이거리의제곱)을 이용하면 된다.


아래 소스코드에 있는 

function checkHitPlayer()

{

  var rtnVal = false;

  var distanceX = (playerUnit.x +  playerUnit.width/2) - enemyBall.x;

  var distanceY = (playerUnit.y +  playerUnit.height/2) - enemyBall.y;

  var distance = distanceX*distanceX + distanceY*distanceY;

  

  if(distance <= (enemyBall.radius + (playerUnit.width/2 -5))

                  * (enemyBall.radius + (playerUnit.height/2 -5)))

    rtnVal = true;

  

  return rtnVal;

}

부분이다.

Sorry, Your browser doesn't support HTML5 CANVAS








Google AdSense

꽤 오래전에 Canvas이미지 처리를 올리고 포스팅이 멈춰 있었다.

오늘은 키입력을 받아서 이미지를 이동시키는 걸 포스팅해본다.

슈팅게임제작의 서막이라고나 할까?





움직이는 이미지는 아래의 그림을 불러들여서 비행기 하나만 뽑아쓰려고 한다.



주의사항1 - 키 멀티입력

키 입력을 받더라도...

javascript는 한번에 하나의 키입력만 인식한다.

키입력을 하나씩 받으면 물체를 상/하/좌/우로 움직이는건 가능한데,

대각선 움직임처럼 상+좌를 인식하기 위해 다른 방법을 강구해봤다.


주의사항2 - 더블버퍼링

지금은 오브젝트 하나 출력이라 깜빡임이 없겠지만,

총알등이 늘어나면 깜빡임이 생긴다.

가상의 추가캔버스를 이용한 더블버퍼링을 사용하도록 한다.



아래의 캔버스 화면은 화살키 또는 W,A,S,D로 비행기를 움직이게 되어있다.

(크롬이면 잘 될꺼고, InternerExplorer는 아마 10버젼부터 나오질않을까.. 말까.. 한다)

Sorry, Your browser doesn't support HTML5 CANVAS








Google AdSense

HTML5 Canvas에서 이미지를 표시하는걸 알아보겠다.

이미지API에서 허를 찌르는 요소가 있는데, 잘 보길 바란다.

 

 

여기서 쓰일 이미지는 아래의 이미지이다.

 

<64x64이미지가 4장 붙어 있는 이미지. 출처-http://opengameart.org>

 

 

1. 이미지 처리 기본

  canvas의 이미지뿌리는 API는 drawImage()이다.

 

Javascript를 통해 Canvas에서 이미지 정보를 읽어들이는 부분을 작성해보자

var canvas1 = document.getElementById("CANVAS_1");

var context1 = canvas1.getContext("2d"); 

var catImage = new Image();

 

catImage.src = "https://t1.daumcdn.net/cfile/tistory/25679E435319402A2B";

catImage라는 변수에 Image를 생성해서 넣고,

catImage.src를 통해 그림의 위치를 지정해 넣었다.

 

이제 그림이 성공적으로 로딩되면,

그 그림을 뿌리는 부분을 작성해보자

catImage.addEventListener('load', eventCatImageLoaded, false);

function eventCatImageLoaded()

{

    context1.drawImage(catImage, 0, 0);

}

catImage에 load이벤트를 걸었다.

load가되면 eventCatImageLoaded()라는 함수를 호출하게 했고,

함수안에선 캔버스 컨텍스트에 이미지 좌표 0,0에 그리게 했다.

 

 

2. 이미지 확대/축소

 앞에서 사용했던 drawImage()함수에 가로, 세로 인자를 추가하면 이미지를 확대/축소할 수 있다. 

 

 

 

3. 이미지 자르기

 앞에서 사용했던 drawImage()함수에 이미지 자르는 지점을 추가하면 이미지를 자르고, 확대/축소할 수 있다.

다만, 인자값의 순서를 조심하라!!! 진짜 허를 찌르는 인자구성이다.

 

 

 

다음 포스트에서는 이미지자르기와 setInterval()을 이용한 기본적인 sprite기능을 알아보겠다.

.... 라고 했지만, 2015년 2월 11일 현재, 글쓰기 귀찮아짐.

이전 포스트의 index.html파일을 다운받아서 소스를 보면 됨


 

 

Google AdSense

HTML5 Canvas에서 이미지 뿌리기기와 타이머를 이용한 스프라이트 출력을 해보겠다.





아래의 sprite sheet를 가지고 직접 이 페이지에 움직이는 스프라이트를 구현해보겠다.


<이미지 출처 - http://ancientbeast.com/viewer/>


만약 아래에 "Sorry, Your browser doesn't support HTML5 Canvas."라는 문구가 보인다면 브라우저가 구형인 것이다.

한국인 대부분이 사용하는 익스플로어는 9버젼부터 Canvas를 지원하고,

10버젼부터 비로소 본격적으로 HTML5를 지원한다.

따라서 HTML5를 공부하고 싶은 사람이라면 10이상을 쓰던가, 아예 크롬을 설치해서 쓰길 바란다.

Sorry, Your browser doesn't support HTML5 Canvas.

위의 움직이는 이미지가 잘보이는가?

위는 실제로 이 페이지안에 canvas와 javascript를 이용하여 구현한 것이다.

아래의 index.html소스를 통해 어떻게 구현했는지 확인하길 바란다.

Index.html



자세한 설명은 다음 포스팅을 통해 하겠다.

원래는 이번 포스트에서 자세한 설명을 하려고 하였으나....

티스토리 글쓰기를 통해 이미지를 등록하고,
그 이미즈를 이용해서 canvas와 javascript를 구현하자니, 글을 몇번이나 날려먹는 실수를 저질렀다.
'하~ 힘빠져...'




Google AdSense

HTML5 작성을 하면서 아쉬운점이...

대부분의 툴들이 CANVAS와 같은 HTML5 최신 요소들을 제대로 지원해주지 않는다는 것이다.





코드 어시스트 기능에 익숙해진 나같은 개발자에게...

"객체."이후 관련 멤버값을 자동으로 표시해주지 않는 것은 엄청난 스트레스였다.


예전처럼 개발할때마다 객체의 프로퍼티나 메서드를 알아보기 위해....

일일히 MSDN같은 Document를 뒤지는 것은 피곤한 일이 아닐 수 없다.


그런데 이것을 보라!!!!


세상에 canvas객체에도 점하나 찍으니 관련 코드들이 어시스트 되고 있다!!!!!

Liveweave라는 녀석인데, 내 PC에 설치한 프로그램도 아니다.

그냥 웹이다. 주소는....

http://liveweave.com/


화면이 4구역으로 나뉘어져 있는데,

좌상단은 HTML5, 우상단은 Javascript,

좌하단은 CSS, 우하단은 브라우저 화면이다.


코딩을 하면 우하단의 브라우저화면에 즉각 반영이 되는 것은 물론!!


Tools하부 메뉴로 가면 1개의 파일로 저장 또는 3개의 파일을 zip으로 압축해서 저장하는 것도 가능하다.

(zip확장자 없이 다운로드 되는데, ".zip"을 붙여서 사용하면 된다)


인터넷에 접속만 할 수 있다면,

eclipse, coda, XDK, Dreamweaver, visual web developer 2010 express 뭐 이런 프로그램 다~~~ 필요없다.


PS. Internet Explorer 9에서 확인해보니 정상 작동하지 않는다.

인터넷 익스플로어 사용자는 HTML5를 본격지원하는 10버젼 이상을 사용해야할듯하다.

Google AdSense

+ Recent posts