This site requires JavaScript, please enable it in your browser!
Greenfoot back
Tommy99
Tommy99 wrote ...

2014/4/24

Shooting Problem

Tommy99 Tommy99

2014/4/24

#
Does anyone know how to shoot a bullet to the left side if my character is facing left? Currently when my character is facing left, it still shoots to the right side. Here is the code for the Bullet Class: import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) import java.awt.*; public class Bullet extends Actor { private static final int SPEED=10; private GreenfootImage left = new GreenfootImage("man-left.png"); private GreenfootImage right = new GreenfootImage("man-right.png"); public void act() { move(SPEED); if(getX()>getWorld().getWidth()-5) { getWorld().removeObject(this); } else { Alligator gator = (Alligator)getOneIntersectingObject(Alligator.class); if(gator !=null) { gator.explode(); getWorld().addObject(new Explosion(),getX(),getY()); getWorld().removeObject(gator); getWorld().removeObject(this); } else { Snake snake = (Snake)getOneIntersectingObject(Snake.class); if(snake !=null) { snake.explode(); getWorld().addObject(new Explosion(),getX(),getY()); getWorld().removeObject(snake); getWorld().removeObject(this); } else { Bee bee = (Bee)getOneIntersectingObject(Bee.class); if(bee!=null){ bee.explode(); getWorld().addObject(new Explosion(),getX(),getY()); getWorld().removeObject(bee); getWorld().removeObject(this); } else { Hedgehog hedgehog = (Hedgehog)getOneIntersectingObject(Hedgehog.class); if(hedgehog!=null){ hedgehog.explode(); getWorld().addObject(new Explosion(),getX(),getY()); getWorld().removeObject(hedgehog); getWorld().removeObject(this); } } } } } } public Bullet() { GreenfootImage image = new GreenfootImage(10,3); image.setColor(Color.RED); image.fill(); setImage(image); } } Here is the code for the character's class: import greenfoot.*; // (World, Actor, GreenfootImage, and Greenfoot) public class SuitMan extends Actor { private final double GRAVITY = 1.2; private final int JUMP_STRENGTH = 15; private GreenfootImage left = new GreenfootImage("man-left.png"); private GreenfootImage right = new GreenfootImage("man-right.png"); private double vSpeed = 0.0; private int speed = 5; private int level = 1; private boolean firing=false; private Scoreboard myScore; private Scoreboard myBullets; private Scoreboard myLives; private boolean moreBullets = true; public SuitMan(Scoreboard score, Scoreboard bullets, Scoreboard lives) { myScore = score; myBullets = bullets; myLives = lives; } public Scoreboard getScoreboard() { return myScore; } public Scoreboard getScoreboard2() { return myBullets; } public Scoreboard getScoreboard3() { return myLives; } public void act() { checkKeys(); Actor ol = getOneIntersectingObject(OpenLift.class); if(ol!=null) { if(level==1) { Greenfoot.setWorld(new SpaceWorld2(this)); } if(level==2) { Greenfoot.setWorld(new SpaceWorld3(this)); } level++; } Actor a = getOneIntersectingObject(Airplane.class); if(a!=null) { Greenfoot.setWorld(new GameOver(this)); Greenfoot.stop(); } if(!onAnything()) { fall(); } } public void jump() { if(onAnything()) { vSpeed = -JUMP_STRENGTH; fall(); } } public void fall() { vSpeed = vSpeed + GRAVITY; setLocation( getX(), (int)(getY()+vSpeed) ); if(getY()>getWorld().getHeight()-3){ lessLives(); getWorld().addObject(new SuitMan(myScore, myBullets, myLives), 11, 442); getWorld().removeObject(this); } } public void checkKeys() { if(Greenfoot.isKeyDown("left")) { setLocation(getX()-speed,getY()); setImage(left); } if(Greenfoot.isKeyDown("right")) { setLocation(getX()+speed,getY()); setImage(right); } if(Greenfoot.isKeyDown("up")) { jump(); } if(Greenfoot.isKeyDown("space")){ if( firing==false){ //casting if(haveBullets()){ lessBullets(); getWorld().addObject(new Bullet(), getX(), getY()); Greenfoot.playSound("EnergyGun.wav"); } firing=true; } } if(!Greenfoot.isKeyDown("space")){ firing=false; } } public void lessBullets() { myBullets.changeScore(-1); if(myBullets.getScore()==0){ moreBullets = false; } } public boolean haveBullets() { return moreBullets; } public boolean onAnything() { int dy = getImage().getHeight()/2; Actor cliff = getOneObjectAtOffset(0,dy,null); return cliff != null; } public void lessLives() { myLives.changeScore(-1); if(myLives.getScore()==0){ Greenfoot.setWorld(new GameOver2(this)); Greenfoot.stop(); } } }
danpost danpost

2014/4/24

#
This issue was dealt with in another discussion thread. No reply is necessary here.
You need to login to post a reply.