libgdx骨骼动画例子
2015-08-28 10:58
417 查看
package jaze.gdx; import com.badlogic.gdx.ApplicationAdapter; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.GL20; import com.badlogic.gdx.graphics.g2d.BitmapFont; import com.badlogic.gdx.graphics.glutils.ShapeRenderer; import com.badlogic.gdx.graphics.glutils.ShapeRenderer.ShapeType; import com.badlogic.gdx.math.MathUtils; import com.badlogic.gdx.math.Polygon; import com.badlogic.gdx.scenes.scene2d.Actor; import com.badlogic.gdx.scenes.scene2d.InputEvent; import com.badlogic.gdx.scenes.scene2d.InputListener; import com.badlogic.gdx.scenes.scene2d.Stage; import com.badlogic.gdx.scenes.scene2d.ui.Label; import com.badlogic.gdx.utils.viewport.StretchViewport; /** * 测试骨骼动画的外边框和原点的位置 * * @author Administrator * */ public class SkelPosTest extends ApplicationAdapter { public static Stage stage; SkelActor actor; ShapeRenderer shapes; private Label showLabel; public void create() { shapes = new ShapeRenderer(); shapes.setAutoShapeType(true); stage = new Stage(new StretchViewport(960, 540)); actor = new SkelActor(); stage.addActor(actor); showLabel = new Label("", new Label.LabelStyle(new BitmapFont(), Color.WHITE)); showLabel.setPosition(0, 30); stage.addActor(showLabel); Gdx.input.setInputProcessor(stage); actor.addListener(new InputListener(){ public boolean mouseMoved(InputEvent event, float x, float y) { showLabel.setText("x="+(x)+" y="+(y)); return true; } public void exit(InputEvent event, float x, float y, int pointer, Actor toActor) { showLabel.setText(""); } }); } public void render() { Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); stage.act(); stage.draw(); shapes.setProjectionMatrix(stage.getCamera().combined); shapes.begin(ShapeType.Line); shapes.setColor(Color.GREEN); shapes.rect(actor.getX(), actor.getY(), actor.getWidth(), actor.getHeight()); shapes.setColor(Color.RED); shapes.polygon(actor.getHeroPolygon().getTransformedVertices()); shapes.setColor(Color.GREEN); shapes.set(ShapeType.Filled); shapes.ellipse(actor.skeleton.getX() + actor.skeleton.getRootBone().getX(), actor.skeleton.getY() + actor.skeleton.getRootBone().getY(), 5, 5); shapes.end(); } class SkelActor extends SkeletonActor { private Polygon heroPolygon; public SkelActor() { super("player_0.atlas", "player_0.json"); //1,要加载的动画资源 heroPolygon = new Polygon(); setPosition(300, 100); skeleton.setBonesToSetupPose();// 重置为初始位置 animationState.setAnimation(0, "player_0_siwang", true); //2,要播放的动画名字 setSize(100, 130); //3,精灵大小 widthOffset = 40; //4,中心点偏移宽度 heightOffset = 40; //5,中心点偏移高度 // float speedX=15*MathUtils.cos((-36)*MathUtils.degreesToRadians); // float speedY=15*MathUtils.sin((-36)*MathUtils.degreesToRadians); // System.err.println(speedX+" "+speedY); heroPolygon.setVertices(new float[] {10,0,80,0,80,100,5,110}); //6,碰撞矩形 } public void act(float delta) { super.act(delta); heroPolygon.setPosition(getX(), getY()); } public Polygon getPolygon() { return heroPolygon; } public Polygon getHeroPolygon() { return heroPolygon; } } }
相关文章推荐
- android handler 内存泄露
- 弹出层遮罩
- centos7安装mariadb10.0.19
- CentOS7 下 Java_Tomcat安装
- HDFS文件系统命令详解
- Linux实时网络监控工具:iftop
- C++中的作用域与生命周期
- Linux源代码分析工具链
- 使用Samba实现Linux与Windows文件共享实践
- DWR框架快速入门<学习随笔>
- LeetCode(233) Number of Digit One
- 随机森林概述
- C#中indexof和substring函数用法
- C++中的作用域与生命周期
- LeetCode题解:Letter Combinations of a Phone Number
- CSDN专家精选,微信开发学习路线大有看头!
- hdu 2897 邂逅明下
- 解决方法]MySql提示:The server quit without updating PID file(…)失败
- 第1回——Web前端经典demo(新建用户弹窗,EasyUI+JQurey)
- MongoDB 去重 分组(针对于某个field 或者 组合项的去重)