Angle 게임 엔진 기반 설명서

4406 단어
안드로이드의 게임 엔진 중 하나인 앵글은 작고 깜찍하다고 생각하기 때문에 간단명료하게 설명을 드리겠습니다.
 
/**
 *           
 */
class MyShip extends AngleSprite
		{
			AngleVector mDestination;//         
			float Speed; //        
			
			public MyShip(AngleSpriteLayout sprite)
			{
				super(sprite);
				mPosition.set(160,240);//        
				mDestination=new AngleVector(mPosition); 
				Speed=200;
			}
			
			@Override
			public void step(float secondsElapsed)
			{      //                      
                               if ((int)mPosition.mX<(int)mDestination.mX)
					mPosition.mX+=Speed*secondsElapsed;
				if ((int)mPosition.mX>(int)mDestination.mX)
					mPosition.mX-=Speed*secondsElapsed;
				if ((int)mPosition.mY<(int)mDestination.mY)
					mPosition.mY+=Speed*secondsElapsed;
				if ((int)mPosition.mY>(int)mDestination.mY)
					mPosition.mY-=Speed*secondsElapsed;
				super.step(secondsElapsed);
			}
		}


class MyShot extends AngleSprite
        {

            public MyShot(MyShip ship, AngleSpriteLayout layout)
            {
                super(layout);
                //        
                mPosition.set(ship.mPosition.mX, ship.mPosition.mY - 20);
            }

            @Override
            public void step(float secondsElapsed)
            {
                //      300
                mPosition.mY -= 300 * secondsElapsed;
                if (mPosition.mY < -10)
                    mDie=true;
                super.step(secondsElapsed);
            }
            
        };

public MyDemo(AngleActivity activity)
        {
            super(activity);
            
            //Create and insert two main object groups. One for the game field and other for the dashboard
            //>Creamos e insertamos dos grupos de objetos principales. Uno para el campo de juego y otro para los marcadores
            ogField=addObject(new AngleObject());
            ogDashboard=addObject(new AngleObject());

            //Create a tile bank and a tile map for the ground (see constructors)
            //>Creamos un banco de tiles y un mapa para el suelo (mirar los constructores)
            AngleTileBank tbGround = new AngleTileBank(mActivity.mGLSurfaceView,R.drawable.tilemap,4,4,32,32);
            tmGround = new AngleTileMap(tbGround, 320, 480, 15, 100, false,false);
            for (int t=0;t<tmGround.mColumnsCount*tmGround.mRowsCount;t++)
                tmGround.mMap[t]=(int) (Math.random()*tbGround.mTilesCount);
            // Put the bottom of the camera at the lowest part of the map
            //>Ponemos la c ara en la parte m  baja del mapa
            tmGround.mTop = tmGround.mRowsCount* tbGround.mTileHeight - tmGround.mHeight;
            ogField.addObject(tmGround);
            slShip = new AngleSpriteLayout(mActivity.mGLSurfaceView,64, 64, R.drawable.anglelogo, 0, 0, 128, 128);
            slShot = new AngleSpriteLayout(mActivity.mGLSurfaceView,16, 16, R.drawable.anglelogo, 0, 0, 128, 128);
            mShip = (MyShip)ogField.addObject(new MyShip(slShip));
            mOtherShip = (MyShip)ogField.addObject(new MyShip(slShip));
            
            //The dashboard background
            //>Fondo de los marcadores
            AngleSpriteLayout slDash = new AngleSpriteLayout(mActivity.mGLSurfaceView, 320, 64, R.drawable.tilemap, 0, 32, 320, 64);
            AngleSprite mDash=(AngleSprite)ogDashboard.addObject(new AngleSprite (slDash));
            mDash.mPosition.set(160, 480-slDash.roHeight/2);
            mDash.mAlpha=0.5f;

            //Font and text
            //>Fuente y texto
            AngleFont fntCafe25 = new AngleFont(mActivity.mGLSurfaceView, 25, Typeface.createFromAsset(getAssets(),"cafe.ttf"), 222, 0, 0, 30, 200, 255, 255);
            ogDashboard.addObject(new AngleString(fntCafe25,"I Like The 2D Game Development Very Much~~",160,440,AngleString.aCenter));
        }

위에서 보면 진짜 게임 엔진이 쉬워요.
하지만 게임 엔진은 간단하고, 극복해야 할 문제는 존재한다.
지도를 만들 때만 위의 코드에서 알 수 있듯이 100줄의 지도를 직접 만들 수 있지만 더 많이 만들면 휴대전화에서 견딜 수 없기 때문에 좋은 캐시 정책이 필요하다.

좋은 웹페이지 즐겨찾기