手把手一步一步教你使用Java开发一个大型街机动作闯关类游戏18玩家攻击动画实现

简介: 手把手一步一步教你使用Java开发一个大型街机动作闯关类游戏18玩家攻击动画实现

Player攻击动画实现


Player.java部分代码

public class Player extends AttackAbleObject{
    private int _leftLocked = 0;
    private int _rightLocked = 0;
    private boolean _attkKeyUp = true;
    private boolean _attack = false;
    private boolean _rdyToAttack = true;
    private final int _hitDelay = 320;
    private int _hitDelayTimer = _hitDelay;
    public void update(Graphics2D g){
        _animator.show(g);
        _handleMovement();
        handleAttack();
    }
    public Transform getTransform(){
        return _animator;
    }
    public void attack(){
        if(_rdyToAttack){
            _animator.setAnimation("attk");
            _attack = true;
            _rdyToAttack = false;
            _hitDelayTimer = _hitDelay;
        }
    }
    void handleAttack(){
        if(_attack){
            _hitDelayTimer -= Config.TIMER_DIF;
            if(_hitDelayTimer<=0){
                _rdyToAttack = true;
                _attack = false;
                _hitDelayTimer = _hitDelay;
                _animator.setAnimation("idle");
            }
        }
    }
    private void _handleMovement(){
        if(_input.isKeyDown(Config.PLAYER1_MELEE) && _attkKeyUp) {
            attack();
            _attkKeyUp = false;
            _keyPressed = true;
        }
        if(_input.isKeyUp(Config.PLAYER1_MELEE) && !_attkKeyUp){
            _attkKeyUp = true;
        }
        if(!_keyPressed && !_animator.isPlaying("idle") && !_animator.isPlaying("attk")){
            _animator.setAnimation("idle");
            _animator.translate(0,0);
        }


_handleMovement方法判断当F键被按下的时候,调用attack()方法;

attack()方法主要是设置攻击动画_animator.setAnimation("attk");

另外,update方法中调用handleAttack方法;

_hitDelayTimer = _hitDelay = 320毫秒

TIMER_DIF = 15.0毫秒

每一帧

_hitDelayTimer -= Config.TIMER_DIF;

320/15大约等于21;1秒60帧的话,攻击动画大约播放21/60=0.35秒。

如果您迷路了,请参考完整源码:


项目源码


项目源码

目录
相关文章
|
2天前
|
NoSQL Java Redis
软件开发常见流程之宝塔初始化安装环境配置,Lam前面不选,直接跳商城,在宝塔内点击软件商城,安Mysql5.7,安java项目管理器,安Ngnix最新版,安Redis
软件开发常见流程之宝塔初始化安装环境配置,Lam前面不选,直接跳商城,在宝塔内点击软件商城,安Mysql5.7,安java项目管理器,安Ngnix最新版,安Redis
|
2天前
|
开发框架 Java Android开发
Java中的类反射与动态代理详解
Java中的类反射与动态代理详解
|
2天前
|
开发框架 Java API
Java中的REST API开发详解
Java中的REST API开发详解
|
2天前
|
消息中间件 存储 SpringCloudAlibaba
会员系统01----基于Java开发的 | BTC,完整的SpringClound微服务包含内容
会员系统01----基于Java开发的货币交易所 | BTC,完整的SpringClound微服务包含内容
|
2天前
|
敏捷开发 Java 测试技术
实现Java应用的快速开发与迭代
实现Java应用的快速开发与迭代
|
2天前
|
安全 Java
Java中的集合类性能比较与选择
Java中的集合类性能比较与选择
|
2天前
|
监控 安全 Java
Java中的线程调度与性能优化技巧
Java中的线程调度与性能优化技巧
|
2天前
|
缓存 安全 Java
Java中的线程安全问题及解决方案
Java中的线程安全问题及解决方案
|
2天前
|
并行计算 安全 Java
Java中的多线程与并发编程详解
Java中的多线程与并发编程详解
|
2天前
|
存储 缓存 前端开发
Java八股文面试之多线程篇
Java八股文面试之多线程篇
9 0
Java八股文面试之多线程篇