zoukankan      html  css  js  c++  java
  • MarteEngine: Animate sprite

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

    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类中,你可以看到一个更好的更复杂的例子。

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

    ——————————————————————————————————
    傲轩游戏网
  • 相关阅读:
    查找list中的重复数据,并得到不重复数据索引位置
    sql server 存储过程中使用事务
    C#获取web.config配置文件内容
    SendKeys.Send 方法
    C# 获取当前路径方法(转载)
    asp.net中URL参数传值中文乱码的三种解决办法
    无法 连接到SQLEXPRESS 已成功与服务器建立连接,但是在登录过程中发生错误。管道的另一端无任何进程
    Windows7 IIS7 无法启动计算机上的服务W3SVC如何修复,计算机上无法找到.was解决方案 visita iis 7.0
    EXCEL开发Interior.ColorIndex 色彩列表
    asp.net web 登录文本框的回车设计
  • 原文地址:https://www.cnblogs.com/cuizhf/p/2378331.html
Copyright © 2011-2022 走看看