月度归档: 2013 年 2 月

  • 如何使用libgdx编写一个简单的游戏(二)— 完善

    如何使用libgdx编写一个简单的游戏(二)— 完善

    上一篇介绍游戏雏形的编写,这一篇将完善部分逻辑并添加更多效果。

    例子代码在https://github.com/htynkn/DartsShaSha,如有需要请自行在tag中下载对应部分。

    完善飞镖逻辑

    现在的飞镖可以旋转可以飞行了,但是有一个问题却没有解决。

    首先飞镖的速度,如果用户触摸位置很靠近左侧,那么飞镖的速度就很慢了。

    其次,如果用户触摸中间位置,默认情况下飞镖应该是朝那个方向飞行,而不是飞到触摸位置就消失了。

    这里的处理办法很简单,就是根据用户触摸位置,算出一个X为480的值,这样飞镖就可以飞到最右侧,同时保持相当的速度。

    在createProjectile方法中添加

    float r = (target.y - image.getY()) / (target.x - image.getX());//获取斜率
    float detY = r *480;//获取Y的变动量
    image.addAction(Actions.moveTo(480 + image.getX(), detY + image.getY(),
    2f));// 设置飞镖的移动

    这样基本就解决了问题。

    接下来来思考飞镖的数量和相应位置。

    首先飞镖的速度一定要得到限制,不然满屏幕飞镖有什么意思。这里限制飞镖的数量为5个。

    在touchDown的最开始添加

    if (projectiles.getChildren().size >=5) 
    …
  • 如何使用libgdx编写一个简单的游戏(一)— 雏形

    如何使用libgdx编写一个简单的游戏(一)— 雏形

    写这几篇文章主要是看了这个系列的文章:http://www.raywenderlich.com/352/how-to-make-a-simple-iphone-game-with-cocos2d-tutorial

    这个系列主要讲述了如何使用Cocos2D编写简单的游戏。稍微读读感觉不错,所以想写个libgdx版本的。

    本篇文章主要讲述基本内容的编写,包括显示人物、怪兽和飞镖。

    最终效果如下图:

    01_thumb1

    获取libgdx

    你可以从libgdx的官网下载打包好的代码,我下载的是0.98版本。

    02_thumb4

    当然,你也可以从git代码仓库获取最新的版本的,或者你习惯使用的以前版本,比如0.97。

    创建项目

    libgdx项目的创建可以有多种方式,我推荐使用setup-ui。方便易用还可以省去很多麻烦,特别是ADT升级以后的ClassNotFound问题。

    如果是下载打包好的,那么就默认包含了gdx-setup-ui,双击就可以打开。

    03_thumb1

    填写一些基本信息,然后选中你下载的0.98.zip那个压缩文件。这里我只生成一个桌面项目和Android项目。

    桌面项目是方便调试,而Android项目是最后发布的。在整个开发中我始终用桌面项目调试,因为速度快,容易排错。同时周期性的在Android真机上测试。

    04_thumb1

    点击生成项目,然后在Eclipse中导入。

    05_thumb1

    一般导入进去以后Android项目会有一些问题,修改project.properties文件和AndroidManifest.xml配置文件。

    运行效果如下:

    06_thumb1

    准备工作

    本例子中用到的图片如下:

    Player_thumb Projectile_thumb Target_thumb

    用gdx-texturepacker打包成一张大图。

    07_thumb1

    我整个例子都是用的是Stage模式。所以它的坐标原点在左下角,如果是一般用Spirte直接绘制,那么原点在右上角。

    首先将打包好的图册复制到assets中新建的pack文件夹。

    然后我们开始动工了,首先删除setup-ui生成的多余代码,整理DartsShaSha.java文件如下:

    package com.cnblogs.htynkn;
    
    import com.badlogic.gdx.ApplicationAdapter;
    import com.badlogic.gdx.Gdx;
    import com.badlogic.gdx.graphics.GL10;
    import com.badlogic.gdx.scenes.scene2d.Stage;
    
    publicclass DartsShaSha extends ApplicationAdapter {
    Stage 
    …