Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package de.master.demo;
- import java.awt.event.KeyEvent;
- import processing.core.PApplet;
- import processing.core.PImage;
- public class ViewportExample extends PApplet {
- int W = KeyEvent.VK_W;
- int A = KeyEvent.VK_A;
- int S = KeyEvent.VK_S;
- int D = KeyEvent.VK_D;
- boolean[] keys;
- float speed;
- PImage background;
- PImage player;
- float tx;
- float ty;
- float sceneWidth;
- float sceneHeight;
- float playerX;
- float playerY;
- float playerScreenX;
- float playerScreenY;
- @Override
- public void setup() {
- background = loadImage("/background.png");
- player = loadImage("/player.png");
- sceneWidth = background.width;
- sceneHeight= background.height;
- size((int)(sceneWidth / 4.0), (int)(sceneHeight / 4.0));
- playerX = 0;
- playerY = 0;
- speed = 3;
- keys = new boolean[Short.MAX_VALUE];
- // initial setting
- tx = -(playerX - (width / 2));
- ty = -(playerY - (width / 2));
- if(tx > 0) tx = 0;
- if(ty > 0) ty = 0;
- playerScreenX = width / 2;
- playerScreenY = height / 2;
- // black
- fill(0);
- stroke(0);
- }
- @Override
- public void draw()
- {
- update();
- image(background, tx, ty);
- image(player, playerScreenX, playerScreenY);
- text((playerX + ":" + playerY), playerScreenX, playerScreenY);
- rect(playerX, playerY, 5, 5);
- }
- public void update()
- {
- if(keys[A])
- {
- playerX -= speed;
- if(playerScreenX <= width / 2 && tx < 0)
- {
- playerScreenX = width / 2;
- tx += speed;
- }
- else if(playerScreenX <= width / 2 && (tx) >= 0)
- {
- playerScreenX -= speed;
- tx = 0;
- if(playerScreenX < 0) playerScreenX = 0;
- }
- else if(playerScreenX >= width / 2 && (tx) < 0)
- {
- playerScreenX -= speed;
- }
- }
- if(keys[D])
- {
- playerX += speed;
- if(playerScreenX >= width / 2 && (-tx + width) < sceneWidth)
- {
- playerScreenX = width / 2;
- tx -= speed;
- }
- if(playerScreenX >= width / 2 && (-tx + width) >= sceneWidth)
- {
- playerScreenX += speed;
- tx = -(sceneWidth - width);
- if(playerScreenX >= width - player.width) playerScreenX = width - player.width;
- }
- if(playerScreenX <= width / 2 && (-tx + width) < sceneWidth)
- {
- playerScreenX += speed;
- }
- }
- if(keys[W])
- {
- playerY -= speed;
- if(playerScreenY <= height / 2 && ty < 0)
- {
- playerScreenY = height / 2;
- ty += speed;
- }
- else if(playerScreenY <= height / 2 && (ty) >= 0)
- {
- playerScreenY -= speed;
- ty = 0;
- if(playerScreenY < 0) playerScreenY = 0;
- }
- else if(playerScreenY >= height / 2 && (ty) < 0)
- {
- playerScreenY -= speed;
- }
- }
- if(keys[S])
- {
- playerY += speed;
- if(playerScreenY >= height / 2 && (-ty + height) < sceneHeight)
- {
- playerScreenY = height / 2;
- ty -= speed;
- }
- if(playerScreenY >= height / 2 && (-ty + height) >= sceneHeight)
- {
- playerScreenY += speed;
- ty = -(sceneHeight - height);
- if(playerScreenY >= height - player.height) playerScreenY = height - player.height;
- }
- if(playerScreenY <= height / 2 && (-ty + height) < sceneHeight)
- {
- playerScreenY += speed;
- }
- }
- if(playerX < 0) playerX = 0;
- if(playerX > sceneWidth) playerX = sceneWidth;
- if(playerY < 0) playerY = 0;
- if(playerY > sceneHeight) playerY = sceneHeight;
- }
- @Override
- public void keyPressed(KeyEvent e) {
- keys[e.getKeyCode()] = true;
- }
- @Override
- public void keyReleased(KeyEvent e) {
- keys[e.getKeyCode()] = false;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement