/**
*
*/
package com.xingyuan.mariobros.screens;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Input;
import com.badlogic.gdx.Screen;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
import com.badlogic.gdx.maps.MapObject;
import com.badlogic.gdx.maps.objects.RectangleMapObject;
import com.badlogic.gdx.maps.tiled.TiledMap;
import com.badlogic.gdx.maps.tiled.TmxMapLoader;
import com.badlogic.gdx.maps.tiled.renderers.OrthogonalTiledMapRenderer;
import com.badlogic.gdx.math.Rectangle;
import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.physics.box2d.Body;
import com.badlogic.gdx.physics.box2d.BodyDef;
import com.badlogic.gdx.physics.box2d.Box2DDebugRenderer;
import com.badlogic.gdx.physics.box2d.FixtureDef;
import com.badlogic.gdx.physics.box2d.PolygonShape;
import com.badlogic.gdx.physics.box2d.World;
import com.badlogic.gdx.utils.viewport.FitViewport;
import com.badlogic.gdx.utils.viewport.Viewport;
import com.xingyuan.mariobros.scenes.Hud;
import com.xingyuan.mariobros.sprites.Mario;
import com.xingyuan.mariobros.tools.B2WorldCreator;
import com.xingyuan.mariobros.MarioBros;
/**
* @author 星缘
*
* 2018年5月9日
*/
public class PlayScreen implements Screen {
private MarioBros game;
//怪物 玩家资源图片
private TextureAtlas atlas;
private OrthographicCamera gameCamera;
private Viewport gamePort;
private Hud hud;
// map
private TmxMapLoader mapLoader;
private TiledMap map;
private OrthogonalTiledMapRenderer renderer;
// box2d
private World world;
private Box2DDebugRenderer box2dDebugRenderer;
private Mario mario;
public PlayScreen(MarioBros game) {
atlas = new TextureAtlas("Mario_and_Enemies.pack");
this.game = game;
gameCamera = new OrthographicCamera();
gamePort = new FitViewport(MarioBros.V_WIDTH/MarioBros.PPM, MarioBros.V_HEIGHT/MarioBros.PPM, gameCamera);
hud = new Hud(game.batch);
mapLoader = new TmxMapLoader();
map = mapLoader.load("level1.tmx");
renderer = new OrthogonalTiledMapRenderer(map,1/MarioBros.PPM);
gameCamera.position.set(gamePort.getWorldWidth() / 2, gamePort.getWorldHeight() / 2, 0);
// box2d
world = new World(new Vector2(0, -10), true);
box2dDebugRenderer = new Box2DDebugRenderer();
new B2WorldCreator(world, map);
//游戏角色
mario = new Mario(world,this);
}
public TextureAtlas getAtlas() {
return atlas;
}
@Override
public void show() {
// TODO Auto-generated method stub
}
public void handleInput(float dt) {
//方向键上
if(Gdx.input.isKeyJustPressed(Input.Keys.UP)) {
mario.b2body.applyLinearImpulse(new Vector2(0,4f), mario.b2body.getWorldCenter(), true);
}
//方向右键
if(Gdx.input.isKeyJustPressed(Input.Keys.RIGHT)
&& mario.b2body.getLinearVelocity().x <= 2) {
mario.b2body.applyLinearImpulse(new Vector2(1f,0), mario.b2body.getWorldCenter(), true);
}
//方向左键
if(Gdx.input.isKeyJustPressed(Input.Keys.LEFT)
&& mario.b2body.getLinearVelocity().x >= -2) {
mario.b2body.applyLinearImpulse(new Vector2(-1f,0), mario.b2body.getWorldCenter(), true);
}
}
public void update(float dt) {
handleInput(dt);
world.step(1/60f, 6, 2);
mario.update(dt);
gameCamera.position.x = mario.b2body.getPosition().x;
gameCamera.update();
renderer.setView(gameCamera);
}
@Override
public void render(float delta) {
update(delta);
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
renderer.render();
//box2d
box2dDebugRenderer.render(world, gameCamera.combined);
game.batch.setProjectionMatrix(gameCamera.combined);
game.batch.begin();
mario.draw(game.batch);
game.batch.end();
game.batch.setProjectionMatrix(hud.stage.getCamera().combined);
hud.stage.draw();
}
@Override
public void resize(int width, int height) {
gamePort.update(width, height);
}
@Override
public void pause() {
// TODO Auto-generated method stub
}
@Override
public void resume() {
// TODO Auto-generated method stub
}
@Override
public void hide() {
// TODO Auto-generated method stub
}
@Override
public void dispose() {
map.dispose();
renderer.dispose();
world.dispose();
box2dDebugRenderer.dispose();
hud.dispose();
// TODO Auto-generated method stub
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
基于libgdx ,java游戏引擎开发.zip
共52个文件
png:10个
java:9个
wav:8个
0 下载量 122 浏览量
2023-09-10
14:44:08
上传
评论
收藏 78.88MB ZIP 举报
温馨提示
用java写的项目,项目可以直接运行,请放心下载使用。
资源推荐
资源详情
资源评论
收起资源包目录
基于libgdx ,java游戏引擎开发.zip (52个子文件)
63
Mario Bros
game
gradle.properties 95B
gradle
wrapper
gradle-wrapper.jar 53KB
gradle-wrapper.properties 233B
gradlew.bat 2KB
build.gradle 1KB
settings.gradle 25B
core
assets
tileset_gutter.png 37KB
Mario Bros.tmx 2KB
badlogic.jpg 67KB
audio
sounds
powerup.wav 44KB
powerup_spawn.wav 26KB
stomp.wav 13KB
powerdown.wav 35KB
mariodie.wav 118KB
bump.wav 10KB
coin.wav 42KB
breakblock.wav 25KB
music
mario_music.ogg 2.37MB
Mario_and_Enemies.png 4KB
level1.tmx 9KB
Mario_and_Enemies.pack 649B
NES - Super Mario Bros - Tileset.png 36KB
Mario GFX
fireball.png 188B
little_mario.png 4KB
big_mario.png 6KB
goomba.png 3KB
turtle.png 4KB
mushroom.png 274B
NES - Super Mario Bros - Tileset.tsx 241B
src
com
xingyuan
mariobros
tools
Brick.java 431B
InteractiveTileObject.java 1KB
B2WorldCreator.java 2KB
Coin.java 672B
scenes
Hud.java 2KB
sprites
Mario.java 3KB
MarioBros.java 581B
screens
PlayScreen.java 4KB
build.gradle 202B
gradlew 5KB
.gitignore 2KB
desktop
src
com
brentaureli
mariobros
desktop
DesktopLauncher.java 464B
build.gradle 2KB
assert
Mario Bros.tmx 2KB
NES - Super Mario Bros - Tileset.png 36KB
NES - Super Mario Bros - Tileset.tsx 241B
world 109B
util
gdx-setup.jar 1.64MB
Tiled-1.1.5-win64.msi 15.66MB
physics-body-editor.jar 6.7MB
runnable-2D-particles.jar 21.18MB
runnable-texturepacker.jar 21.88MB
gdx-texturepacker-4.6.0.exe 12.92MB
共 52 条
- 1
资源评论
c++服务器开发
- 粉丝: 3042
- 资源: 4463
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功