public void ghostMove() { /*if (!CKeyboard.pressed(CKeyboard.LEFT) && (!CKeyboard.pressed(CKeyboard.RIGHT))) * { * setVelX(0); * } * else*/ if (CKeyboard.pressed(CKeyboard.LEFT)) { setVelX(-speed); } else if (CKeyboard.pressed(CKeyboard.RIGHT)) { setVelX(speed); } /*if (!CKeyboard.pressed(CKeyboard.UP) && (!CKeyboard.pressed(CKeyboard.DOWN))) * { * setVelY(0); * } * else */ if (CKeyboard.pressed(CKeyboard.UP)) { setVelY(-speed); } else if (CKeyboard.pressed(CKeyboard.DOWN)) { setVelY(speed); } }
// Se llama desde los estados jumping y falling para movernos para los costados. private void controlMoveHorizontal() { int tileWidth = CGame.inst().getMap().getTileWidth(); // Si estamos en una pared, corregirnos. if (isWallLeft(getX(), mOldY)) { // Reposicionar el personaje contra la pared. setX(((mLeftX + 1) * tileWidth) - this.getLeftOffsetBoundingBox()); } if (isWallRight(getX(), mOldY)) { // Reposicionar el personaje contra la pared. setX((((mRightX) * tileWidth) - getWidth()) + this.getRightOffsetBoundingBox()); } // Chequeamos si podemos movernos. if (!(CKeyboard.pressed(CKeyboard.KEY_A) || CKeyboard.pressed(CKeyboard.KEY_D))) { setVelX(0); } else { if (CKeyboard.pressed(CKeyboard.KEY_A)) { // Chequear pared a la izquierda. // Si hay pared a la izquierda vamos a stand. if (isWallLeft(getX() - 1, mOldY)) { // Reposicionar el personaje contra la pared. setX(((mLeftX + 1) * tileWidth) - this.getLeftOffsetBoundingBox()); } else { // No hay pared, se puede mover. setVelX(-400); setFlip(true); } } else { // Chequear pared a la derecha. // Si hay pared a la derecha vamos a stand. if (isWallRight(getX() + 1, mOldY)) { // Reposicionar el personaje contra la pared. setX((((mRightX) * tileWidth) - getWidth()) + this.getRightOffsetBoundingBox()); } else { // No hay pared, se puede mover. setVelX(400); setFlip(false); } } } }
// Se llama desde los estados jumping y falling para movernos para los costados. private void controlMoveHorizontal() { // Si estamos en una pared, corregirnos. if (isWallLeft(getX(), mOldY)) { // Reposicionar el personaje contra la pared. setX(((mLeftX + 1) * CTileMap.TILE_WIDTH) - X_OFFSET_BOUNDING_BOX); } if (isWallRight(getX(), mOldY)) { // Reposicionar el personaje contra la pared. setX((((mRightX) * CTileMap.TILE_WIDTH) - getWidth()) + X_OFFSET_BOUNDING_BOX); } // Chequeamos si podemos movernos. if (!(CKeyboard.pressed(CKeyboard.KEY_A) || CKeyboard.pressed(CKeyboard.KEY_D))) { setVelX(0); } else { if (CKeyboard.pressed(CKeyboard.KEY_A)) { // Chequear pared a la izquierda. // Si hay pared a la izquierda vamos a stand. if (isWallLeft(getX() - 1, mOldY)) { // Reposicionar el personaje contra la pared. setX(((mLeftX + 1) * CTileMap.TILE_WIDTH) - X_OFFSET_BOUNDING_BOX); } else { // No hay pared, se puede mover. setVelX(-400); setFlip(true); } } else { // Chequear pared a la derecha. // Si hay pared a la derecha vamos a stand. if (isWallRight(getX() + 1, mOldY)) { // Reposicionar el personaje contra la pared. setX((((mRightX) * CTileMap.TILE_WIDTH) - getWidth()) + X_OFFSET_BOUNDING_BOX); } else { // No hay pared, se puede mover. setVelX(400); setFlip(false); } } } }
private void moveHorizontal() { if (!(CKeyboard.pressed(CKeyboard.LEFT) || CKeyboard.pressed(CKeyboard.RIGHT))) { setVelX(0); return; } else { if (CKeyboard.pressed(CKeyboard.LEFT)) { // Chequear pared a la izquierda. // Si hay pared a la izquierda vamos a stand. if (isLeft(getX(), getY())) { // Reposicionar el personaje contra la pared. //setX((((int) getX ()/CTileMap.TILE_WIDTH)+1)*CTileMap.TILE_WIDTH); setX((mLeftX + 1) * CTileMap.TILE_WIDTH); // Carlos version. //setX (getX()+CTileMap.TILE_WIDTH/(getWidth()-1)); } else { // No hay pared, se puede mover. setVelX(-400); //setFlip(true); } } else if (CKeyboard.pressed(CKeyboard.RIGHT)) { // Chequear pared a la derecha. // Si hay pared a la derecha vamos a stand. if (isRight(getX(), getY())) { // Reposicionar el personaje contra la pared. setX(((mRightX) * CTileMap.TILE_WIDTH) - getWidth()); } else { // No hay pared, se puede mover. setVelX(400); //setFlip(false); } } } }
private void moveVertical() { if (!(CKeyboard.pressed(CKeyboard.UP) || CKeyboard.pressed(CKeyboard.DOWN))) { setVelY(0); return; } else { if (CKeyboard.pressed(CKeyboard.UP)) { // Chequear pared a la izquierda. // Si hay pared a la izquierda vamos a stand. if (isNorth(getX(), getY())) { // Reposicionar el personaje contra la pared. //setX((((int) getX ()/CTileMap.TILE_WIDTH)+1)*CTileMap.TILE_WIDTH); setY((mUpY + 1) * CTileMap.TILE_HEIGHT); // Carlos version. //setX (getX()+CTileMap.TILE_WIDTH/(getWidth()-1)); } else { // No hay pared, se puede mover. setVelY(-400); //setFlip(true); } } else if (CKeyboard.pressed(CKeyboard.DOWN)) { // Chequear pared a la derecha. // Si hay pared a la derecha vamos a stand. if (isSouth(getX(), getY())) { // Reposicionar el personaje contra la pared. setY(((mDownY) * CTileMap.TILE_HEIGHT) - getHeight()); } else { // No hay pared, se puede mover. setVelY(400); //setFlip(false); } } } }
override public void update() { base.update(); if (getState() == STATE_STAND) { if (CKeyboard.pressed(CKeyboard.LEFT) && !isLeft(getX() - 1, getY())) { setState(STATE_WALKING); return; } if (CKeyboard.pressed(CKeyboard.RIGHT) && !isRight(getX() + 1, getY())) { setState(STATE_WALKING); return; } if (CKeyboard.pressed(CKeyboard.UP) && !isNorth(getX(), getY() - 1)) { setState(STATE_WALKING); return; } if (CKeyboard.pressed(CKeyboard.DOWN) && !isSouth(getX(), getY() + 1)) { setState(STATE_WALKING); return; } } else if (getState() == STATE_WALKING) { if (!(CKeyboard.pressed(CKeyboard.LEFT) || CKeyboard.pressed(CKeyboard.RIGHT) || CKeyboard.pressed(CKeyboard.UP) || CKeyboard.pressed(CKeyboard.DOWN))) { setState(STATE_STAND); return; } moveHorizontal(); moveVertical(); } // MOSTRAR TODA EL AREA DEL DIBUJO. mRect.setXY(getX(), getY()); mRect.setScaleX(WIDTH); mRect.setScaleY(HEIGHT); mRect.update(); }
private void move() { if (CKeyboard.pressed(CKeyboard.LEFT)) { setVelX(-50); } if (CKeyboard.pressed(CKeyboard.RIGHT)) { setVelX(50); } if (CKeyboard.pressed(CKeyboard.UP)) { setVelY(50); } if (CKeyboard.pressed(CKeyboard.DOWN)) { setVelY(-50); } }
override public void update() { //Debug.Log ("test left : " + CKeyboard.pressed (CKeyboard.LEFT) + CKeyboard.pressed (CKeyboard.UP) + CKeyboard.pressed (CKeyboard.SPACE)); //Debug.Log ("test right: " + CKeyboard.pressed (CKeyboard.RIGHT) + CKeyboard.pressed (CKeyboard.UP) + CKeyboard.pressed (CKeyboard.SPACE)); // Guardar la posicion anterior del objeto. setOldYPosition(); base.update(); if (getState() == STATE_STAND) { // En stand no deberia pasar nunca que quede metido en una pared. // Si estamos en una pared, corregirnos. if (isWallLeft(getX(), getY())) { // Reposicionar el personaje contra la pared. setX(((mLeftX + 1) * CTileMap.TILE_WIDTH) - X_OFFSET_BOUNDING_BOX); } if (isWallRight(getX(), getY())) { // Reposicionar el personaje contra la pared. setX((((mRightX) * CTileMap.TILE_WIDTH) - getWidth()) + X_OFFSET_BOUNDING_BOX); } // Si en el pixel de abajo del jugador no hay piso, caemos. if (!isFloor(getX(), getY() + 1)) { setState(STATE_FALLING); return; } if (CKeyboard.firstPress(CKeyboard.SPACE)) { setState(STATE_JUMPING); return; } if (CKeyboard.pressed(CKeyboard.KEY_A) && !isWallLeft(getX() - 1, getY())) { setState(STATE_WALKING); return; } if (CKeyboard.pressed(CKeyboard.KEY_D) && !isWallRight(getX() + 1, getY())) { setState(STATE_WALKING); return; } } else if (getState() == STATE_WALKING) { if (isWallLeft(getX(), getY())) { // Reposicionar el personaje contra la pared. setX(((mLeftX + 1) * CTileMap.TILE_WIDTH) - X_OFFSET_BOUNDING_BOX); } if (isWallRight(getX(), getY())) { // Reposicionar el personaje contra la pared. setX((((mRightX) * CTileMap.TILE_WIDTH) - getWidth()) + X_OFFSET_BOUNDING_BOX); } if (CKeyboard.firstPress(CKeyboard.SPACE)) { setState(STATE_JUMPING); return; } // Si en el pixel de abajo del jugador no hay piso, caemos. if (!isFloor(getX(), getY() + 1)) { setState(STATE_FALLING); return; } if (!(CKeyboard.pressed(CKeyboard.KEY_A) || CKeyboard.pressed(CKeyboard.KEY_D))) { setState(STATE_STAND); return; } else { if (CKeyboard.pressed(CKeyboard.KEY_A)) { // Chequear pared a la izquierda. // Si hay pared a la izquierda vamos a stand. if (isWallLeft(getX(), getY())) { // Reposicionar el personaje contra la pared. //setX((((int) getX ()/CTileMap.TILE_WIDTH)+1)*CTileMap.TILE_WIDTH); setX(((mLeftX + 1) * CTileMap.TILE_WIDTH) - X_OFFSET_BOUNDING_BOX); // Carlos version. //setX (getX()+CTileMap.TILE_WIDTH/(getWidth()-1)); setState(STATE_STAND); return; } else { // No hay pared, se puede mover. setVelX(-400); setFlip(true); } } else { // Chequear pared a la derecha. // Si hay pared a la derecha vamos a stand. if (isWallRight(getX(), getY())) { // Reposicionar el personaje contra la pared. setX((((mRightX) * CTileMap.TILE_WIDTH) - getWidth()) + X_OFFSET_BOUNDING_BOX); setState(STATE_STAND); return; } else { // No hay pared, se puede mover. setVelX(400); setFlip(false); } } } } else if (getState() == STATE_JUMPING) { controlMoveHorizontal(); if (isFloor(getX(), getY() + 1)) { setY(mDownY * CTileMap.TILE_HEIGHT - getHeight()); setState(STATE_STAND); return; } if (isRoof(getX(), getY() - 1)) { setY(((mUpY + 1) * CTileMap.TILE_HEIGHT) - Y_OFFSET_BOUNDING_BOX); setVelY(0); setState(STATE_HIT_ROOF); return; } } else if (getState() == STATE_FALLING) { controlMoveHorizontal(); if (isFloor(getX(), getY() + 1)) { setY(mDownY * CTileMap.TILE_HEIGHT - getHeight()); setState(STATE_STAND); return; } } else if (getState() == STATE_HIT_ROOF) { if (getTimeState() > 0.02f * 5.0f) { setState(STATE_FALLING); return; } } // Chequear el paso entre pantallas. controlRooms(); }
override public void update() { base.update(); mShipSprite.update(); if (getState() == STATE_MOVE) { //if (CKeyPoll.firstPress(CKeyPoll.SPACE)) //{ // fire(); //} //if (CKeyPoll.firstPress(CKeyPoll.UP)) //{ // setVelY( -15); //} if (!CKeyboard.pressed(CKeyboard.LEFT) && !CKeyboard.pressed(CKeyboard.RIGHT)) { setVelX(0); } if (CKeyboard.pressed(CKeyboard.LEFT)) { setVelX(-SPEED); } else if (CKeyboard.pressed(CKeyboard.RIGHT)) { setVelX(SPEED); } //if (getY() < getRadius()) //{ // setY(getRadius()); // setVelY(0); //} // Control de borde abajo. //if (getY() > mYFloor) //{ // setY(mYFloor); // setVelY(0); //} //var enemy:CGenericEnemy = CEnemyManager.inst().collides(this) as CGenericEnemy; //if (enemy != null) //{ // hitByEnemy(); // // TODO: Matar el enemigo. //} } else if (getState() == STATE_FREEZE) { if (getTimeState() > 1.0f) { setState(STATE_JUMP_DYING); } } else if (getState() == STATE_JUMP_DYING) { if (getTimeState() > 2.0f) { setState(STATE_MOVE); } } }
override public void update() { // Guardar la posicion anterior del objeto. setOldYPosition(); base.update(); if (getState() == STATE_STAND) { // En stand no deberia pasar nunca que quede metido en una pared. // Si estamos en una pared, corregirnos. if (isWallLeft(getX(), getY())) { // Reposicionar el personaje contra la pared. setX(((mLeftX + 1) * CTileMap.TILE_WIDTH) - X_OFFSET_BOUNDING_BOX); } if (isWallRight(getX(), getY())) { // Reposicionar el personaje contra la pared. setX((((mRightX) * CTileMap.TILE_WIDTH) - getWidth()) + X_OFFSET_BOUNDING_BOX); } // Si en el pixel de abajo del jugador no hay piso, caemos. if (!isFloor(getX(), getY() + 1)) { setState(STATE_FALLING); return; } if (CKeyboard.firstPress(CKeyboard.SPACE)) { setState(STATE_JUMPING); return; } if (CKeyboard.pressed(CKeyboard.LEFT) && !isWallLeft(getX() - 1, getY())) { setState(STATE_WALKING); return; } if (CKeyboard.pressed(CKeyboard.RIGHT) && !isWallRight(getX() + 1, getY())) { setState(STATE_WALKING); return; } if (CKeyboard.firstPress(CKeyboard.LEFT_CTRL)) { setState(STATE_ATTACKING); return; } } else if (getState() == STATE_WALKING) { if (isWallLeft(getX(), getY())) { // Reposicionar el personaje contra la pared. setX(((mLeftX + 1) * CTileMap.TILE_WIDTH) - X_OFFSET_BOUNDING_BOX); } if (isWallRight(getX(), getY())) { // Reposicionar el personaje contra la pared. setX((((mRightX) * CTileMap.TILE_WIDTH) - getWidth()) + X_OFFSET_BOUNDING_BOX); } if (CKeyboard.firstPress(CKeyboard.SPACE)) { setState(STATE_JUMPING); return; } if (CKeyboard.firstPress(CKeyboard.LEFT_CTRL)) { setState(STATE_ATTACKING); return; } // Si en el pixel de abajo del jugador no hay piso, caemos. if (!isFloor(getX(), getY() + 1)) { setState(STATE_FALLING); return; } if (!(CKeyboard.pressed(CKeyboard.LEFT) || CKeyboard.pressed(CKeyboard.RIGHT))) { setState(STATE_STAND); return; } else { if (CKeyboard.pressed(CKeyboard.LEFT)) { // Chequear pared a la izquierda. // Si hay pared a la izquierda vamos a stand. if (isWallLeft(getX(), getY())) { // Reposicionar el personaje contra la pared. //setX((((int) getX ()/CTileMap.TILE_WIDTH)+1)*CTileMap.TILE_WIDTH); setX(((mLeftX + 1) * CTileMap.TILE_WIDTH) - X_OFFSET_BOUNDING_BOX); // Carlos version. //setX (getX()+CTileMap.TILE_WIDTH/(getWidth()-1)); setState(STATE_STAND); return; } else { // No hay pared, se puede mover. setVelX(-400); setFlip(true); } } else { // Chequear pared a la derecha. // Si hay pared a la derecha vamos a stand. if (isWallRight(getX(), getY())) { // Reposicionar el personaje contra la pared. setX((((mRightX) * CTileMap.TILE_WIDTH) - getWidth()) + X_OFFSET_BOUNDING_BOX); setState(STATE_STAND); return; } else { // No hay pared, se puede mover. setVelX(400); setFlip(false); } } } } else if (getState() == STATE_JUMPING) { controlMoveHorizontal(); if (isFloor(getX(), getY() + 1)) { setY(mDownY * CTileMap.TILE_HEIGHT - getHeight()); setState(STATE_POSITIONING); return; } if (isRoof(getX(), getY() - 1)) { setY((mUpY + 1) * CTileMap.TILE_HEIGHT); setVelY(0); setState(STATE_FALLING); return; } if (CKeyboard.firstPress(CKeyboard.SPACE)) { setState(STATE_SECOND_JUMP); return; } if (CKeyboard.firstPress(CKeyboard.LEFT_CTRL)) { setState(STATE_AIR_ATTACK); } // NUEVO ESTADO if (isWallLeft(getX() - 1, getY())) { Debug.Log("PARED IZQ 1"); // Reposicionar el personaje contra la pared. setX(((mLeftX + 1) * CTileMap.TILE_WIDTH) - X_OFFSET_BOUNDING_BOX); setState(STATE_STAND_WALL_LEFT); return; } if (isWallRight(getX() + 1, getY())) { Debug.Log("PARED DER 1"); // Reposicionar el personaje contra la pared. setX((((mRightX) * CTileMap.TILE_WIDTH) - getWidth()) + X_OFFSET_BOUNDING_BOX); setState(STATE_STAND_WALL_RIGHT); return; } } else if (getState() == STATE_FALLING) { controlMoveHorizontal(); if (isFloor(getX(), getY() + 1)) { setY(mDownY * CTileMap.TILE_HEIGHT - getHeight()); setState(STATE_STAND); return; } // NUEVO ESTADO if (isWallLeft(getX() - 1, getY())) { Debug.Log("PARED IZQ"); // Reposicionar el personaje contra la pared. setX(((mLeftX + 1) * CTileMap.TILE_WIDTH) - X_OFFSET_BOUNDING_BOX); setState(STATE_STAND_WALL_LEFT); return; } if (isWallRight(getX() + 1, getY())) { Debug.Log("PARED DER"); // Reposicionar el personaje contra la pared. setX((((mRightX) * CTileMap.TILE_WIDTH) - getWidth()) + X_OFFSET_BOUNDING_BOX); setState(STATE_STAND_WALL_RIGHT); return; } } else if (getState() == STATE_STAND_WALL_LEFT) { if (isRoof(getX(), getY() - 1)) { //setY((mUpY + 1) * CTileMap.TILE_HEIGHT); setY((mUpY + 1)); } /*if (CKeyboard.firstPress(CKeyboard.SPACE)) * { * setState(STATE_JUMPING); * return; * } * * if (CKeyboard.pressed(CKeyboard.LEFT) && ( !isWallLeft(getX() - 1, getY()) && (!isFloor(getX(), getY() + 1)))) * { * setState(STATE_FALLING); * return; * } * * if (CKeyboard.pressed(CKeyboard.RIGHT) && ( !isWallRight(getX() + 1, getY()) && (!isFloor(getX(), getY() + 1))) ) * { * setState(STATE_FALLING); * return; * }*/ // En stand no deberia pasar nunca que quede metido en una pared. // Si estamos en una pared, corregirnos. if (isWallLeft(getX(), getY())) { // Reposicionar el personaje contra la pared. setX(((mLeftX + 1) * CTileMap.TILE_WIDTH) - X_OFFSET_BOUNDING_BOX); } if (isWallRight(getX(), getY())) { // Reposicionar el personaje contra la pared. setX((((mRightX) * CTileMap.TILE_WIDTH) - getWidth()) + X_OFFSET_BOUNDING_BOX); } // Si en el pixel de abajo del jugador no hay piso, caemos. /*if (!isFloor (getX(), getY()+1)) * { * setState (STATE_FALLING); * return; * }*/ if (CKeyboard.firstPress(CKeyboard.SPACE)) { setState(STATE_JUMPING_WALL_TO_RIGHT); return; } /*if (CKeyboard.pressed(CKeyboard.LEFT) && !isWallLeft(getX() - 1, getY())) * { * //setState (STATE_WALKING); * setState(STATE_FALLING_WALL_TO_LEFT); * * return; * }*/ if (CKeyboard.pressed(CKeyboard.RIGHT) && !isWallRight(getX() + 1, getY())) { //setState (STATE_WALKING); setState(STATE_FALLING_WALL_TO_RIGHT); return; } } else if (getState() == STATE_JUMPING_WALL_TO_RIGHT) { controlMoveHorizontal(); if (isFloor(getX(), getY() + 1)) { setY(mDownY * CTileMap.TILE_HEIGHT - getHeight()); setState(STATE_STAND); return; } if (isRoof(getX(), getY() - 1)) { setY((mUpY + 1) * CTileMap.TILE_HEIGHT); setVelY(0); setState(STATE_FALLING_WALL_TO_RIGHT); return; } if (isWallRight(getX() + 1, getY())) { Debug.Log("PARED DER 1"); // Reposicionar el personaje contra la pared. setX((((mRightX) * CTileMap.TILE_WIDTH) - getWidth()) + X_OFFSET_BOUNDING_BOX); setState(STATE_STAND_WALL_RIGHT); return; } } else if (getState() == STATE_FALLING_WALL_TO_RIGHT) { controlMoveHorizontal(); if (isFloor(getX(), getY() + 1)) { setY(mDownY * CTileMap.TILE_HEIGHT - getHeight()); setState(STATE_STAND); return; } if (isWallRight(getX() + 1, getY())) { Debug.Log("PARED DER 1"); // Reposicionar el personaje contra la pared. setX((((mRightX) * CTileMap.TILE_WIDTH) - getWidth()) + X_OFFSET_BOUNDING_BOX); setState(STATE_STAND_WALL_RIGHT); return; } } else if (getState() == STATE_STAND_WALL_RIGHT) { if (isRoof(getX(), getY() - 1)) { //setY((mUpY + 1) * CTileMap.TILE_HEIGHT); setY((mUpY + 1)); } /*if (CKeyboard.firstPress(CKeyboard.SPACE)) * { * setState(STATE_JUMPING); * return; * } * * if (CKeyboard.pressed(CKeyboard.LEFT) && ( !isWallLeft(getX() - 1, getY()) && (!isFloor(getX(), getY() + 1)))) * { * setState(STATE_FALLING); * return; * } * * if (CKeyboard.pressed(CKeyboard.RIGHT) && ( !isWallRight(getX() + 1, getY()) && (!isFloor(getX(), getY() + 1))) ) * { * setState(STATE_FALLING); * return; * }*/ // En stand no deberia pasar nunca que quede metido en una pared. // Si estamos en una pared, corregirnos. if (isWallLeft(getX(), getY())) { // Reposicionar el personaje contra la pared. setX(((mLeftX + 1) * CTileMap.TILE_WIDTH) - X_OFFSET_BOUNDING_BOX); } if (isWallRight(getX(), getY())) { // Reposicionar el personaje contra la pared. setX((((mRightX) * CTileMap.TILE_WIDTH) - getWidth()) + X_OFFSET_BOUNDING_BOX); } // Si en el pixel de abajo del jugador no hay piso, caemos. /*if (!isFloor (getX(), getY()+1)) * { * setState (STATE_FALLING); * return; * }*/ if (CKeyboard.firstPress(CKeyboard.SPACE)) { setState(STATE_JUMPING_WALL_TO_LEFT); return; } if (CKeyboard.pressed(CKeyboard.LEFT) && !isWallLeft(getX() - 1, getY())) { //setState (STATE_WALKING); setState(STATE_FALLING_WALL_TO_LEFT); return; } /*if (CKeyboard.pressed(CKeyboard.RIGHT) && !isWallRight(getX() + 1, getY())) * { * //setState (STATE_WALKING); * setState(STATE_FALLING_WALL_TO_RIGHT); * return; * }*/ } else if (getState() == STATE_JUMPING_WALL_TO_LEFT) { controlMoveHorizontal(); if (isFloor(getX(), getY() + 1)) { setY(mDownY * CTileMap.TILE_HEIGHT - getHeight()); setState(STATE_STAND); return; } if (isRoof(getX(), getY() - 1)) { setY((mUpY + 1) * CTileMap.TILE_HEIGHT); setVelY(0); setState(STATE_FALLING_WALL_TO_LEFT); return; } if (isWallLeft(getX() - 1, getY())) { Debug.Log("PARED izq 1"); // Reposicionar el personaje contra la pared. //setX((((mRightX) * CTileMap.TILE_WIDTH) - getWidth()) + X_OFFSET_BOUNDING_BOX); setX(((mLeftX + 1) * CTileMap.TILE_WIDTH) - X_OFFSET_BOUNDING_BOX); setState(STATE_STAND_WALL_LEFT); return; } } else if (getState() == STATE_FALLING_WALL_TO_LEFT) { controlMoveHorizontal(); if (isFloor(getX(), getY() + 1)) { setY(mDownY * CTileMap.TILE_HEIGHT - getHeight()); setState(STATE_STAND); return; } if (isWallLeft(getX() - 1, getY())) { Debug.Log("PARED IZQ 1"); // Reposicionar el personaje contra la pared. setX(((mLeftX + 1) * CTileMap.TILE_WIDTH) - X_OFFSET_BOUNDING_BOX); setState(STATE_STAND_WALL_LEFT); return; } } else if (getState() == STATE_STAND_WALL) { if (CKeyboard.firstPress(CKeyboard.SPACE)) { setState(STATE_JUMPING); return; } if (CKeyboard.pressed(CKeyboard.LEFT) && !isWallLeft(getX() - 1, getY())) { setState(STATE_FALLING); return; } if (CKeyboard.pressed(CKeyboard.RIGHT) && !isWallRight(getX() + 1, getY())) { setState(STATE_FALLING); return; } } else if (getState() == STATE_POSITIONING) { controlMoveHorizontal(); if (this.isEnded()) { setState(STATE_STAND); } Debug.Log("state positioning"); } else if (getState() == STATE_ATTACKING) { controlMoveHorizontal(); if (CKeyboard.pressed(CKeyboard.LEFT)) { // Chequear pared a la izquierda. // Si hay pared a la izquierda vamos a stand. if (isWallLeft(getX(), getY())) { // Reposicionar el personaje contra la pared. //setX((((int) getX ()/CTileMap.TILE_WIDTH)+1)*CTileMap.TILE_WIDTH); setX(((mLeftX + 1) * CTileMap.TILE_WIDTH) - X_OFFSET_BOUNDING_BOX); // Carlos version. //setX (getX()+CTileMap.TILE_WIDTH/(getWidth()-1)); setState(STATE_STAND); return; } else { // No hay pared, se puede mover. setVelX(-800); setFlip(true); } } else { // Chequear pared a la derecha. // Si hay pared a la derecha vamos a stand. if (isWallRight(getX(), getY())) { // Reposicionar el personaje contra la pared. setX((((mRightX) * CTileMap.TILE_WIDTH) - getWidth()) + X_OFFSET_BOUNDING_BOX); setState(STATE_STAND); return; } else { // No hay pared, se puede mover. setVelX(800); setFlip(false); } } if (this.isEnded()) { setState(STATE_STAND); } } else if (getState() == STATE_SECOND_JUMP) { controlMoveHorizontal(); if (this.isEnded()) { setState(STATE_FALLING); } else if (CKeyboard.pressed(CKeyboard.LEFT_CTRL)) { setState(STATE_SECOND_JUMP_ATTACK); } /*if (CKeyboard.firstPress(CKeyboard.LEFT_CTRL)) * { * setState(STATE_AIR_ATTACK); * }*/ } else if (getState() == STATE_AIR_ATTACK) { controlMoveHorizontal(); if (isFloor(getX(), getY() + 1)) { this.stopMove(); setState(STATE_WALKING); } if (this.isEnded()) { setState(STATE_FALLING); } else { /*if (CKeyboard.pressed(CKeyboard.LEFT)) * { * setVelX(-800); * setFlip(true); * }*/ if (CKeyboard.pressed(CKeyboard.RIGHT)) { setVelX(800); setFlip(false); } } } else if (getState() == STATE_SECOND_JUMP_ATTACK) { controlMoveHorizontal(); if (isFloor(getX(), getY() + 1)) { setState(STATE_STAND); } /*if (CKeyboard.firstPress(CKeyboard.LEFT_CTRL)) * { * setState(STATE_AIR_ATTACK); * }*/ } // Chequear el paso entre pantallas. controlRooms(); /*CGameObject item = CItemManager.inst().collidesAndy(this); * if (item != null) * { * item.hit(); * }*/ }
override public void update() { mAngle += mIncAngle; base.update(); if (CKeyboard.pressed(CKeyboard.KEY_A)) { turnLeft(ROTATION_SPEED); } if (CKeyboard.pressed(CKeyboard.KEY_D)) { turnRight(ROTATION_SPEED); } if (CKeyboard.pressed(CKeyboard.KEY_W) /*|| CMouse.pressed()*/) { float angRad = CMath.degToRad(getRotation()); setAccelX(500.0f * Mathf.Cos(angRad)); setAccelY(500.0f * Mathf.Sin(angRad)); mFire.setVisible(true); } else { setAccelX(0.0f); setAccelY(0.0f); mFire.setVisible(false); } if (CKeyboard.firstPress(CKeyboard.SPACE) /*|| CMouse.firstPress()*/) { CPlayerBullet bullet = new CPlayerBullet(); float angRad = CMath.degToRad(getRotation()); bullet.setXY(getX() + Mathf.Cos(angRad) * RADIUS, getY() + Mathf.Sin(angRad) * RADIUS); bullet.setVelXY(BULLET_SPEED * Mathf.Cos(angRad), BULLET_SPEED * Mathf.Sin(angRad)); CBulletManager.inst().add(bullet); } // Friccion. setFriction(0.99f); float xMouse = CMouse.getPos().x; float yMouse = CMouse.getPos().y; //Debug.Log ("Mouse: " + xMouse + "," + yMouse); // La nave mira al mouse. //lookAt(xMouse, yMouse); // Bullet Hell. if (CKeyboard.pressed(CKeyboard.KEY_G)) { float angRad2 = CMath.degToRad(mAngle); CPlayerBullet bullet2 = new CPlayerBullet(); bullet2.setXY(getX() + Mathf.Cos(angRad2) * 30.0f, getY() + Mathf.Sin(angRad2) * 30.0f); bullet2.setVelXY(400.0f * Mathf.Cos(angRad2), 400.0f * Mathf.Sin(angRad2)); CBulletManager.inst().add(bullet2); } // Posicionar el fuego atras de la nave. float angFire = CMath.degToRad(getRotation() + 180); mFire.setXY(getX() + Mathf.Cos(angFire) * 26.0f, getY() + Mathf.Sin(angFire) * 26.0f); mFire.setRotation(getRotation()); mFire.update(); CVector a = new CVector(10, 20); CVector b = new CVector(-10, -20); }
override public void update() { int tileWidth = CGame.inst().getMap().getTileWidth(); int tileHeight = CGame.inst().getMap().getTileHeight(); //Debug.Log ("test left : " + CKeyboard.pressed (CKeyboard.LEFT) + CKeyboard.pressed (CKeyboard.UP) + CKeyboard.pressed (CKeyboard.SPACE)); //Debug.Log ("test right: " + CKeyboard.pressed (CKeyboard.RIGHT) + CKeyboard.pressed (CKeyboard.UP) + CKeyboard.pressed (CKeyboard.SPACE)); // Guardar la posicion anterior del objeto. setOldYPosition(); base.update(); if (CKeyboard.firstPress(KeyCode.E)) { this.selectNextPower(); } else if (CKeyboard.firstPress(KeyCode.Q)) { this.selectPreviousPower(); } if (getState() == STATE_STAND) { // En stand no deberia pasar nunca que quede metido en una pared. // Si estamos en una pared, corregirnos. if (isWallLeft(getX(), getY())) { // Reposicionar el personaje contra la pared. setX(((mLeftX + 1) * tileWidth) - this.getLeftOffsetBoundingBox()); } if (isWallRight(getX(), getY())) { // Reposicionar el personaje contra la pared. setX((((mRightX) * tileWidth) - getWidth()) + this.getRightOffsetBoundingBox()); } // Si en el pixel de abajo del jugador no hay piso, caemos. if (!isFloor(getX(), getY() + 1)) { setState(STATE_FALLING); return; } if (CKeyboard.firstPress(CKeyboard.SPACE)) { setState(STATE_PRE_JUMPING); return; } if (CKeyboard.pressed(CKeyboard.KEY_A) && !isWallLeft(getX() - 1, getY())) { setState(STATE_WALKING); return; } if (CKeyboard.pressed(CKeyboard.KEY_D) && !isWallRight(getX() + 1, getY())) { setState(STATE_WALKING); return; } } else if (getState() == STATE_WALKING) { if (isWallLeft(getX(), getY())) { // Reposicionar el personaje contra la pared. setX(((mLeftX + 1) * tileWidth) - this.getLeftOffsetBoundingBox()); } if (isWallRight(getX(), getY())) { // Reposicionar el personaje contra la pared. setX((((mRightX) * tileWidth) - getWidth()) + this.getRightOffsetBoundingBox()); } if (CKeyboard.firstPress(CKeyboard.SPACE)) { setState(STATE_PRE_JUMPING); return; } // Si en el pixel de abajo del jugador no hay piso, caemos. if (!isFloor(getX(), getY() + 1)) { setState(STATE_FALLING); return; } if (!(CKeyboard.pressed(CKeyboard.KEY_A) || CKeyboard.pressed(CKeyboard.KEY_D))) { setState(STATE_STAND); return; } else { if (CKeyboard.pressed(CKeyboard.KEY_A)) { // Chequear pared a la izquierda. // Si hay pared a la izquierda vamos a stand. if (isWallLeft(getX(), getY())) { // Reposicionar el personaje contra la pared. //setX((((int) getX ()/tileWidth)+1)*tileWidth); setX(((mLeftX + 1) * tileWidth) - this.getLeftOffsetBoundingBox()); // Carlos version. //setX (getX()+tileWidth/(getWidth()-1)); setState(STATE_STAND); return; } else { // No hay pared, se puede mover. setVelX(-400); setFlip(true); } } else { // Chequear pared a la derecha. // Si hay pared a la derecha vamos a stand. if (isWallRight(getX(), getY())) { // Reposicionar el personaje contra la pared. setX((((mRightX) * tileWidth) - getWidth()) + this.getRightOffsetBoundingBox()); setState(STATE_STAND); return; } else { // No hay pared, se puede mover. setVelX(400); setFlip(false); } } } } else if (getState() == STATE_PRE_JUMPING) { controlMoveHorizontal(); if (!isFloor(getX(), getY() + 1) && getAccelY() == 0) { setAccelY(CGameConstants.GRAVITY); } if (this.isEnded()) { this.setState(STATE_JUMPING); } } else if (getState() == STATE_JUMPING) { controlMoveHorizontal(); if (this.getVelY() > 0) { setState(STATE_FALLING); return; } if (isFloor(getX(), getY() + 1)) { setY(mDownY * tileHeight - getHeight()); setState(STATE_STAND); return; } if (isRoof(getX(), getY() - 1)) { setY(((mUpY + 1) * tileHeight) - this.getTopOffsetBoundingBox()); setVelY(0); setState(STATE_HIT_ROOF); return; } } else if (getState() == STATE_FALLING) { controlMoveHorizontal(); if (isFloor(getX(), getY() + 1)) { setY(mDownY * tileHeight - getHeight()); setState(STATE_STAND); return; } } else if (getState() == STATE_HIT_ROOF) { if (getTimeState() > 0.02f * 5.0f) { setState(STATE_FALLING); return; } } else if (getState() == STATE_DASHING) { setVelY(0); // Si estamos en una pared, corregirnos. if (isWallLeft(getX(), mOldY)) { // Reposicionar el personaje contra la pared. setX(((mLeftX + 1) * CTileMap.Instance.getTileWidth()) - this.getLeftOffsetBoundingBox()); } if (isWallRight(getX(), mOldY)) { // Reposicionar el personaje contra la pared. setX((((mRightX) * CTileMap.Instance.getTileWidth()) - getWidth()) + this.getRightOffsetBoundingBox()); } if (isFloor(getX(), getY() + 1)) { setY(mDownY * CTileMap.Instance.getTileHeight() - getHeight()); } if (isRoof(getX(), getY() - 1)) { setY(((mUpY + 1) * CTileMap.Instance.getTileHeight()) - this.getTopOffsetBoundingBox()); } if (this.getTimeState() >= 0.6f / 3 * 2) { this.initAnimation(47, 49, 12, false); } if (this.getTimeState() >= 0.6f) { this.setState(STATE_STAND); } } // Chequear el paso entre pantallas. controlRooms(); textoPoderes.setXY(this.getX(), this.getY() - textoPoderes.getHeight()); textoPoderes.setText(this.powers[this.selectedPower].getName()); textoPoderes.update(); for (int i = 0; i < this.powers.Count; i++) { this.powers[i].update(); } }
override public void update() { // Se guarda la posicion anterior del objecto. setOldYPosition(); base.update(); if (getState() == STATE_STAND) { setFriction(1); //TODO: REALIZAR EL BOUNDING BOX VERTICAL (ARRIBA Y ABAJO) DEL PERSONAJE PARA EL ESTADO GHOST. // TODO: EN EL ESTADO GHOST CAERA O VOLARA A OTRA DIRECCION? PLANTEAR TIMER. // En stand no deberia pasar nunca que quede metido en una pared. // Corregir la posicion del personaje si esta en una pared. if (isWallLeft(getX(), getY())) { // Reposicionar el personaje contra la pared utilizando el bounding box correspondiente. setX(((mLeftX + 1) * CTileMap.TILE_WIDTH) - X_OFFSET_BOUNDING_BOX); } if (isWallRight(getX(), getY())) { // Reposicionar el personaje contra la pared. setX((((mRightX) * CTileMap.TILE_WIDTH) - getWidth()) + X_OFFSET_BOUNDING_BOX); } // Si en el pixel de abajo del jugador no hay piso, caemos. if (!isFloor(getX(), getY() + 1)) { setState(STATE_FALLING); return; } if (CKeyboard.firstPress(CKeyboard.UP)) { setState(STATE_JUMPING); return; } if (CKeyboard.pressed(CKeyboard.LEFT) && !isWallLeft(getX() - 1, getY())) { setState(STATE_WALKING); return; } if (CKeyboard.pressed(CKeyboard.RIGHT) && !isWallRight(getX() + 1, getY())) { setState(STATE_WALKING); return; } } else if (getState() == STATE_WALKING) { if (isWallLeft(getX(), getY())) { // Reposicionar el personaje contra la pared. setX(((mLeftX + 1) * CTileMap.TILE_WIDTH) - X_OFFSET_BOUNDING_BOX); } if (isWallRight(getX(), getY())) { // Reposicionar el personaje contra la pared. setX((((mRightX) * CTileMap.TILE_WIDTH) - getWidth()) + X_OFFSET_BOUNDING_BOX); } //Barra espaciadora salta, first press por lo tanto solo cuando se presiona, si se mantiene presionado no salta. if (CKeyboard.firstPress(CKeyboard.UP)) { setState(STATE_JUMPING); return; } // Si en el pixel de abajo del jugador no hay piso, caemos. if (!isFloor(getX(), getY() + 1)) { setState(STATE_FALLING); return; } //En el caso que no nos movamos, vuelve al estado STAND. if (!(CKeyboard.pressed(CKeyboard.LEFT) || CKeyboard.pressed(CKeyboard.RIGHT))) { setState(STATE_STAND); return; } else { if (CKeyboard.pressed(CKeyboard.LEFT)) { // Chequear pared a la izquierda. // Si hay pared a la izquierda vamos a stand. if (isWallLeft(getX(), getY())) { // Reposicionar el personaje contra la pared. //setX((((int) getX ()/CTileMap.TILE_WIDTH)+1)*CTileMap.TILE_WIDTH); setX(((mLeftX + 1) * CTileMap.TILE_WIDTH) - X_OFFSET_BOUNDING_BOX); // Carlos version. //setX (getX()+CTileMap.TILE_WIDTH/(getWidth()-1)); setState(STATE_STAND); return; } else { // No hay pared, se puede mover. setVelX(-speed); setFlip(true); } } else { // Chequear pared a la derecha. // Si hay pared a la derecha vamos a stand. if (isWallRight(getX(), getY())) { // Reposicionar el personaje contra la pared. setX((((mRightX) * CTileMap.TILE_WIDTH) - getWidth()) + X_OFFSET_BOUNDING_BOX); setState(STATE_STAND); return; } else { // No hay pared, se puede mover. setVelX(speed); setFlip(false); } } } } //En el caso que saltemos, debemos ajustar la posicion del personaje. else if (getState() == STATE_JUMPING) { controlMoveHorizontal(); if (isFloor(getX(), getY() + 1)) { setY(mDownY * CTileMap.TILE_HEIGHT - getHeight()); setState(STATE_STAND); return; } // En el caso de el salto, cuando toque el techo, se usa el Y OFFSET para corregir la posicion a la posicion del gorro. if (isRoof(getX(), getY() - 1)) { setY(((mUpY + 1) * CTileMap.TILE_HEIGHT) - Y_OFFSET_BOUNDING_BOX); setVelY(0); setState(STATE_HIT_ROOF); return; } } else if (getState() == STATE_FALLING) { controlMoveHorizontal(); if (isFloor(getX(), getY() + 1)) { setY(mDownY * CTileMap.TILE_HEIGHT - getHeight()); setState(STATE_STAND); return; } } else if (getState() == STATE_HIT_ROOF) { if (getTimeState() > 0.02f * 5.0f) { setState(STATE_FALLING); return; } } // Chequear el paso entre pantallas. //controlRooms(); if (getState() != STATE_GHOST) { if (currentEnergy < maxEnergy) { currentEnergy++; } if (CKeyboard.firstPress(CKeyboard.SPACE)) { if (currentEnergy >= (maxEnergy / 5)) { currentEnergy = currentEnergy - (maxEnergy / 5); setState(STATE_GHOST); return; } } } if (getState() == STATE_GHOST) { setFriction(0.95f); if (currentEnergy == 0) { setState(STATE_STAND); return; } else { currentEnergy--; ghostMove(); } if (CKeyboard.firstPress(CKeyboard.SPACE)) { setState(STATE_STAND); return; } } if (CKeyboard.firstPress(CKeyboard.KEY_C)) { if (getState() != STATE_GHOST) { if (getFlip()) { box = new hitBox(this, 30, 135, 5, (getHeight() / 2) - (135 / 2), 10, 60, hitBox.ALLYBOX); mHitBoxManager.addBox(box); } else { box = new hitBox(this, 30, 135, 5 + getWidth() - 38, (getHeight() / 2) - (135 / 2), 10, 60, hitBox.ALLYBOX); mHitBoxManager.addBox(box); } } } /*if (box != null) * { * box.update(); * }*/ mHitBoxManager.update(); }