⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 player.java

📁 JAVA游戏编程光盘,内有18个实例,非常详细地阐述了JAVA游戏编程的知识.
💻 JAVA
字号:
package com.brackeen.javagamebook.shooter3D;

import com.brackeen.javagamebook.math3D.*;
import com.brackeen.javagamebook.game.*;
import com.brackeen.javagamebook.ai.Projectile;

/**
    A Player object.
*/
public class Player extends JumpingGameObject {

    private static final float BULLET_HEIGHT = 75;
    private static final float DEFAULT_PLAYER_RADIUS = 32;
    private static final float DEFAULT_PLAYER_HEIGHT = 128;
    private static final float DEFAULT_MAX_HEALTH = 100;

    private PolygonGroup blastModel;
    private float maxHealth;
    private float health;

    public Player() {
        super(new PolygonGroup("Player"));

        // set up player bounds
        PolygonGroupBounds playerBounds = getBounds();
        playerBounds.setTopHeight(DEFAULT_PLAYER_HEIGHT);
        playerBounds.setRadius(DEFAULT_PLAYER_RADIUS);

        // set up health
        maxHealth = DEFAULT_MAX_HEALTH;
        setHealth(maxHealth);
    }

    public void setBlastModel(PolygonGroup blastModel) {
        this.blastModel = blastModel;
    }

    public float getHealth() {
        return health;
    }

    public void setHealth(float health) {
        this.health = health;
    }

    public float getMaxHealth() {
        return maxHealth;
    }

    public void addHealth(float addition) {
        setHealth(health + addition);
    }

    public boolean isAlive() {
        return (health > 0);
    }

    public void fireProjectile() {

        //
        float x = -getTransform().getSinAngleY();
        float z = -getTransform().getCosAngleY();
        float cosX = getTransform().getCosAngleX();
        float sinX = getTransform().getSinAngleX();
        Projectile blast = new Projectile(
            (PolygonGroup)blastModel.clone(),
            new Vector3D(cosX*x, sinX, cosX*z),
            null,
            40, 60);
        float dist = getBounds().getRadius() +
            blast.getBounds().getRadius();
        // blast starting location needs work. looks like
        // the blast is coming out of your forehead when
        // you're shooting down.
        blast.getLocation().setTo(
            getX() + x*dist,
            getY() + BULLET_HEIGHT,
            getZ() + z*dist);

        // "spawns" the new game object
        addSpawn(blast);

        // make a "virtual" noise that bots can "hear"
        // (500 milliseconds)
        makeNoise(500);
    }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -