Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package com.belocraft.gameobjects; import com.badlogic.gdx.math.Circle; import com.badlogic.gdx.math.Vector2; import com.belocraft.mzbhelpers.AssetLoader; /** * * @author Eugene */ public class Bird { private Vector2 position; private Vector2 velocity; private Vector2 acceleration; private float rotation; // ? private int width; private int height; private Circle boundingCircle; private float originalY; private boolean isAlive; public Bird(float x, float y, int width, int height) { this.width = width; this.height = height; position = new Vector2(x, y); velocity = new Vector2(0, 0); acceleration = new Vector2(0, 460); boundingCircle = new Circle(); this.originalY = y; isAlive = true; } public void update(float delta) { velocity.add(acceleration.cpy().scl(delta)); if (velocity.y > 200) { velocity.y = 200; } if (position.y < 0) { position.y = 0; velocity.y = 0; } position.add(velocity.cpy().scl(delta)); boundingCircle.set(position.x + 9, position.y + 6, 6.5f); // ? ? if (velocity.y < 0) { rotation -= 600 * delta; if (rotation < -20) { rotation = -20; } } // ? ? if (isFalling() || !isAlive) { rotation += 480 * delta; if (rotation > 90) { rotation = 90; } } } public void onClick() { if (isAlive) { velocity.y = -140; AssetLoader.flap.play(); } } public void updateReady(float runTime) { position.y = 2 * (float) Math.sin(7 * runTime) + originalY; } public float getX() { return position.x; } public float getY() { return position.y; } public float getWidth() { return width; } public float getHeight() { return height; } public float getRotation() { return rotation; } public boolean isFalling() { return velocity.y > 110; } public boolean shouldntFlap() { return velocity.y > 70 || !isAlive; } public Circle getBoundingCircle() { return boundingCircle; } public boolean isAlive() { return isAlive; } public void die() { isAlive = false; velocity.y = 0; } public void decelerate() { acceleration.y = 0; } public void onRestart(int y) { rotation = 0; position.y = y; velocity.x = 0; velocity.y = 0; acceleration.x = 0; acceleration.y = 460; isAlive = true; } }