Hello,
I need help with my isTouching() method in my checkIntersections() Method. In this method, I rely on isTouching() to locate the classes, but isTouching() isn't working. I printed out the value of isTouching() multiple times and the code always printed out "false".
Can someone please help me with this problem?
Here is my code below:
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) public class Player extends Actor { private int timer = 600; private final int TOTALAIRTIME; private int verticalChange,accelerationUpwards, accelerationDownwards, airTime,ground; private boolean inAir,pressedUp; private String jumpSound; public Player() { verticalChange = 5; accelerationUpwards = -1; accelerationDownwards = 2; airTime = 0; inAir = false; pressedUp = false; TOTALAIRTIME = 15; jumpSound = "player_jump_effect3.wav"; } public void act() { checkKeyPress(); checkIntersections(); updateTimer(); if (timer>0){ timer--; getWorld().showText("Time left: "+timer,150,30); if(timer == 0) { getWorld().showText("GAME OVER",300,200); Greenfoot.stop(); } } } public void checkKeyPress() { int dx = 0,dy = 0; checkGround(); if(getY() == ground) { if(airTime == 0) { verticalChange = 5; airTime = TOTALAIRTIME; inAir = true; } } if(Greenfoot.isKeyDown("right")) dx = 4; if(Greenfoot.isKeyDown("left")) dx = -4; if(Greenfoot.isKeyDown("up") && airTime > 0) { Greenfoot.playSound(jumpSound); pressedUp = true; verticalChange += accelerationUpwards; airTime--; } if(!pressedUp && getY() < ground) { verticalChange += accelerationDownwards; if(ground - getY() < Math.abs(verticalChange)) verticalChange = ground - getY(); } if(getY() + verticalChange > ground) { verticalChange = ground - getY(); } pressedUp = false; setLocation(getX() + dx, getY() + verticalChange); Greenfoot.getKey(); } public void checkGround() { Actor possiblePlatform = getOneObjectAtOffset(0,getImage().getHeight(), Platform.class); if (possiblePlatform == null) { possiblePlatform = getOneObjectAtOffset(0,getImage().getHeight(), MiniPlatform.class); } if(possiblePlatform != null) { ground = possiblePlatform.getY() - possiblePlatform.getImage().getHeight(); } else { ground = getWorld().getHeight() - getImage().getHeight()/2 - 30; } } public boolean platformIsAbove() { Actor possiblePlatform = getOneObjectAtOffset(0,getImage().getHeight(), Platform.class); if (possiblePlatform == null) { possiblePlatform = getOneObjectAtOffset(0,getImage().getHeight(), MiniPlatform.class); } if(isTouching(Platform.class) && getY() - getImage().getHeight() >= ground) { System.out.println(getY()); return true; } if(isTouching(Platform.class) && getY() - getImage().getHeight() >= ground) { System.out.println(getY()); } if(isTouching(MiniPlatform.class) && getY() - getImage().getHeight() >= ground) { System.out.println(getY()); } if(isTouching(MiniPlatform.class) && getY() - getImage().getHeight() >= ground) { System.out.println(getY()); return true; } return false; } public void checkIntersections() { System.out.println(isTouching(Lava.class)); if(isTouching(Lava.class)){ setLocation(20,237); Greenfoot.playSound("LavaDeath.wav"); } if(isTouching(Points.class)){ removeTouching(Points.class); timer += 100; } if(isTouching(Portal.class))Greenfoot.setWorld(new Level2()); if(isTouching(Portal2.class))Greenfoot.setWorld(new Level3()); if(isTouching(Bee.class)){ setLocation(20,200); } if(isTouching(Portal3.class)){ getWorld().showText ("YOU WIN!!!", 300, 150); getWorld().showText ("Play again?", 300, 200); Greenfoot.stop(); } } public void updateTimer() { timer --; } }