ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 1. 플레이어 라켓과 컴퓨터 라켓 만들기
    C,C++로 만드는 간단한 프로젝트/에어 하키 - Cocos2D 활용 2021. 4. 8. 10:56

    개발환경 : Visual Studio 2008 과 cocos2d-1.0.0-x-0.9.0

    Cocos2D는 Win API와는 좌표계가 다르다.

    Win API는 좌측상단이 원점인데, Cocos2D는 좌측하단이 원점이다.

    즉, Cocos2D는 우리가 보편적으로 사용하는 좌표계와 같다.

    이는 여기에서의 구현에 반드시 기본으로 숙지를 하고 있어야 한다.

     

     

    아래는 기본 적인 컴퓨터와 플레이어 및 경기장에 대한 그림이다.

    [그림 1]

     

     

    HelloWorldScene.h

     

     

    HelloWorldScene.cpp

     

     

     

     

     

     

     

     

     

     

    아래는 BlockObject함수의 셜명이다.

    위 [그림 1]과 같이 컴퓨터는 컴퓨터 진영에서 벗어나면 안 되며,

    플레이어는 자기 자신의 진영을 벗어나지 않도록 만드는 것이다.

    그리고, 컴퓨터가 움직일 수 있는 진영을 좀 더 세부적으로 보면

    ( 사실, 컴퓨터나 플레이어나 모두 라켓이며, 라켓이 움직이는 것이다. )

    그리고, 컴퓨터나 플레이어의 좌표는 라켓의 중심점으로 되어 있다.

    이는 anchorPoint 가 x와 y가 모두 0.5로 설정되어 있다.

    보통 이러한 설정은 위의 Init함수에서 설정을 하는데,

    컴퓨터와 플레이어를 setAnchorPoint 함수를 이용하여 처리하는데 ( setAnchorPoint는 엔진에서 제공해주는 함수 )

    Init함수에서는 컴퓨터와 플레이어에서 호출하지 않았으므로 자동으로 중심점으로 설정 된다.

    아래의 [그림 2]를 보면, 위 함수의 Screen에 대한 변수가 어떤 역할을 하는지 알 수 있다.

    [그림 2]

    위는 컴퓨터의 진영이며, 컴퓨터 라켓의 포지션이 경기장 밖을 벗어나지 못하게 가두려면

    라켓의 x포지션이 스크린레프트(ScreenLeft)보다 작아지면 라켓의 x포지션을 스크린레프트 값으로 고정.

    라켓의 x포지션이 스크린라이트(ScreenRight)보다 커지면 라켓의 x포지션을 스크린라이트 값으로 고정.

    라켓의 y포지션이 스크린바텀보다 작아지면 라켓의 y포지션을 스크린바텀 값으로 고정.

    라켓의 y포지션이 스크린탑보다 커지면 라켓의 y포지션을 스크린탑 값으로 고정.

     

     

    프로그램 실행영상

    아래의 영상과 같이 플레이어는 자기 진영을 벗어나지 못한다.

     

     

    헤더 파일 및 소스 파일

    AppDelegate.cpp
    0.00MB
    AppDelegate.h
    0.00MB
    HelloWorldScene.cpp
    0.00MB
    HelloWorldScene.h
    0.00MB

    댓글

Designed by Tistory.