博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MarteEngine: Animate sprite
阅读量:7030 次
发布时间:2019-06-28

本文共 1431 字,大约阅读时间需要 4 分钟。

在完成教程后,是让一些精灵做一些动画效果的时候了。不再只是一些静态的图像,而是能执行一些动态的动作。

 

 

Animation

 

如果你细化做游戏,你可能已经知道一些动画的基础知识:很多时候你只是在不同的图像之间快速切换,以至于人眼会看到一个流畅的移动效果。使用MarteEngine你可以用简单的3个步骤实现它:

  1. 加载spritesheet: sprite sheet包含不同的图像(例如向右移动的英雄)。
  2. 设置不同的动画: 让MarteEngine了解不同帧和它的持续时间。
  3. 更新动画:按照你的游戏逻辑更新动画。

 

public 
class Player 
extends Entity {
    
/**
     * 
@param
 x
     *            , x coordinate on screen where Player starts
     * 
@param
 y
     *            , y coordinate on screen where Player starts
     
*/
    
public Player(
float x, 
float y) {
        
super(x, y);
        
//
 load spriteSheet
        SpriteSheet playerSheet = ResourceManager.getSpriteSheet("player");
        setupAnimations(playerSheet);
    }
    
private 
void setupAnimations(SpriteSheet playerSheet) {
        setGraphic(playerSheet);
        duration = 150;
        addAnimation("STAND_DOWN", 
false, 0, 0);
        addAnimation(ME.WALK_RIGHT, 
true, 2, 0, 1, 2, 3, 4, 5);
    }
    
    @Override
    
public 
void render(GameContainer container, Graphics g)
            
throws SlickException {
        
super.render(container, g);
    }
    
    @Override
    
public 
void update(GameContainer container, 
int delta)
            
throws SlickException {
        
super.update(container, delta);
        
        
if (check(ME.WALK_RIGHT)) {
            currentAnim = ME.WALK_RIGHT;
            
if (collide(SOLID, x + 10, y) == 
null) {
                x = x+ 10;
            }
        }
    }
}

 这个例子首先使用MarteEngine的ResourceManager加载spritesheet。你会看到有一个叫做setupAnimations的私有方法(添加这个方法仅仅是为了解释起来简单),这个方法通过动画逻辑创建了不同的动画。最后一步当玩家按下右箭头时,我们设置当前动画为WALK_RIGHT.在这个Entity的下一次渲染时,super.render

被调用,这将导致动画使用你在setupAnimations中设置的持续时间被更新。

 

在MarteEngine的test目录下的MoveAvatarTest类中,你可以看到一个更好的更复杂的例子。

完成本教程后你可以继续学习 。

 

 

 

 

 

转载地址:http://sugxl.baihongyu.com/

你可能感兴趣的文章
区块链和数据科学:如果同时应用这两种技术,将会实现什么?
查看>>
Oracle即将发布的全新Java垃圾收集器 ZGC
查看>>
深入浅出Tensorflow(三):训练神经网络模型的常用方法
查看>>
Blazor将.NET带回到浏览器
查看>>
利用人工智能提升团队包容性
查看>>
详解分布式系统本质:“分治”和“冗余”
查看>>
gRPC-Web发布,REST又要被干掉了?
查看>>
全站爬虫项目一阶段总结
查看>>
在项目中引入领域驱动设计的经验
查看>>
用关系型NoSQL回到未来
查看>>
Jeff Bean谈Flink与流式处理的5大新发现
查看>>
技术寡头争霸传之:控制开源工具,就控制了整个生态
查看>>
微软把UWP定位成业务线应用程序开发平台
查看>>
2018腾讯云+未来峰会互联网专场:腾讯云智能物联解决方案亮相
查看>>
Python数据可视化的10种技能
查看>>
关于有效的性能调优的一些建议
查看>>
微软发起Java on Azure调查,呼吁Java社区积极参与
查看>>
搭建svn仓库
查看>>
JavaScript arguments 对象详解
查看>>
[elixir! #0002] [译] 在Phoenix中实现动态表单 by José Valim
查看>>