手把手一步一步教你使用Java开发一个大型街机动作闯关类游戏16

2022-01-08  本文已影响0人  __豆约翰__

Enemy

Enemy.java

package character;

import managers.InputManager;
import sprite.Animator;
import sprite.Transform;

import java.awt.*;
import java.awt.event.KeyEvent;

public class Enemy extends AttackAbleObject{
    private Animator _animator;

    public Enemy(Animator animator, int hurtx, int hurty, int hurtscale_x, int hurtscale_y
            , int hitoffset_x1, int hitoffset_y1, int hitoffset_x2, int hitoffset_y2){
        super(animator,hurtx,hurty,hurtscale_x,hurtscale_y
                ,hitoffset_x1,hitoffset_y1,hitoffset_x2,hitoffset_y2);
        _animator = animator;
        _animator.setAnimation("idle");
    }


    public void move(double x, double y){

    }

    @Override
    public void update(Graphics2D g){
        _animator.show(g);
    }

    public Transform getTransform(){
        return _animator;
    }

}

因为Enemy能攻击player,也能受到攻击,所以咱们让他继承AttackAbleObject
在GameApp中初始化一个Enemy对象如下:

private Enemy _enemy;
    private Player _player;

    public GameApp(){
        try{

            background = new Background();
            _resLoader.loadAnimations();

            Animator animatorEnemy = new Animator("enemy3");
            _enemy = new Enemy(animatorEnemy,88, 38, 18, 88, // HurtBox
                    93, 54, 50, 11);

            _enemy.getTransform().setOrigin(97, 110);
            _enemy.getTransform().scale(2,2);


            g.setColor(Color.red);
            g.draw(_enemy.getHurtBox());
            g.draw(_enemy.getHitBox());

            _enemy.update(g);

同时我们在Animationlist.xml中新增enemy配置信息:

<enemy3>
        <walk>
            <image>zombie4/02.png</image>
            <image>zombie4/03.png</image>
            <image>zombie4/04.png</image>
            <image>zombie4/05.png</image>
            <image>zombie4/06.png</image>
            <image>zombie4/07.png</image>
            <image>zombie4/08.png</image>
            <image>zombie4/09.png</image>
        </walk>
        <idle>
            <image>zombie4/01.png</image>
            <image>zombie4/01.png</image>
            <image>zombie4/01.png</image>
            <image>zombie4/22.png</image>
            <image>zombie4/22.png</image>
            <image>zombie4/22.png</image>
        </idle>
        <attk>
            <image>zombie4/10.png</image>
            <image>zombie4/11.png</image>
            <image>zombie4/12.png</image>
            <image>zombie4/13.png</image>
            <image>zombie4/14.png</image>
        </attk>
        <block>
            <image>zombie4/23.png</image>
            <image>zombie4/23.png</image>
            <image>zombie4/23.png</image>
            <image>zombie4/23.png</image>
            <image>zombie4/23.png</image>
            <image>zombie4/23.png</image>
        </block>
        <die>
            <image>zombie4/22.png</image>
            <image>zombie4/23.png</image>
            <image>zombie4/36.png</image>
            <image>zombie4/37.png</image>
            <image>zombie4/38.png</image>
            <image>zombie4/39.png</image>
            <image>zombie4/40.png</image>
            <image>zombie4/41.png</image>
            <image>zombie4/41.png</image>
            <image>zombie4/41.png</image>
        </die>
        <dead>
            <image>zombie4/41.png</image>
        </dead>
    </enemy3>

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

项目源码

项目源码

上一篇下一篇

猜你喜欢

热点阅读