Привет, Я пытаюсь сделать игру с гравитационным переворачиванием, как механик, похожий на старого героя тяжелой игры, но я не могу заставить его работать. пожалуйста, помогитеКак создать механизм гравитационного переворачивания (ActionScript 3)
Это теория, которую я имею в своей голове. У меня есть мувиклип и его всегда падающий/this.y + dy. Но как только он столкнется с платформой, dy будет установлен на 0, поэтому он перестанет падать. Затем, когда я нажимаю пробел, dy снова будет установлен на 3, но он будет умножен на -1, поэтому он начнет летать вверх.
Это то, что я до сих пор
package {
import flash.display.*;
import flash.events.*;
import flash.ui.Keyboard;
public class Player extends MovieClip{
//Properties
private var moveLeft:Boolean;
private var moveRight:Boolean;
private var gravity:Boolean; //Switches gravity
private var dx:Number //Speed of player moving on X axis
private var dy:Number //Speed of player moving on Y axis
private var level:MovieClip;
private var platforms:Array;
private var tilesTop:Array;
private var tilesBtm:Array;
private var tilesLeft:Array;
private var tilesRight:Array;
private var grounded:Boolean;
private var flipGravity:Number;
//Constructor
public function Player(iMain:Main) {
level = iMain.getLevel();
platforms = level.getPlatforms();
tilesTop = level.getTilesTop();
tilesBtm = level.getTilesBtm();
tilesLeft = level.getTilesLeft();
tilesRight = level.getTilesRight();
dx = 10;
dy = 10;
flipGravity = -1;
this.addEventListener(Event.ADDED_TO_STAGE, addedToStageHandler);
}
//Methods
// Method: Add to stage handler
private function addedToStageHandler(evt:Event):void {
this.stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
this.stage.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler);
}
//Methods: Key down handler
private function keyDownHandler(evt:KeyboardEvent):void {
if (evt.keyCode == Keyboard.LEFT) {
moveLeft = true;
}
else if (evt.keyCode == Keyboard.RIGHT) {
moveRight = true;
}
else if (evt.keyCode == Keyboard.SPACE) {
if (gravity) {
gravity = false;
}
else if (!gravity) {
gravity = true;
}
}
}
//Methods: Key up handler
private function keyUpHandler(evt:KeyboardEvent):void {
if (evt.keyCode == Keyboard.LEFT) {
moveLeft = false;
}
else if (evt.keyCode == Keyboard.RIGHT) {
moveRight = false;
}
}
//Methods: Move player
public function movePlayer() {
// Move downward
this.y += dy;
grounded = false;
// *** Player's collision tests
// Check if it lands on platform
landOnPlatform();
// Move left
if (moveLeft) { // equivalent to if (moveLeft == true)
if (this.x > 200) { //move player
this.x -= dx;
}
else {
level.moveLevel(dx);
if (level.x >= 0) {//stage stop moving so that the player won't fall of the screen(left)
level.x = 0;
this.x -= dx;
if (this.x < this.width/2) {
this.x=this.width/2;
}
}
}
}
// Move right
if (moveRight) {
if (this.x < 600) { //move player
this.x += dx;
}
else {
level.moveLevel(-dx);
if (level.x <= -1600) { //stage stop moving so that the player won't fall of the screen(right)
level.x = -1600;
this.x += dx;
if (this.x > stage.stageWidth - this.width/2) {
this.x= stage.stageWidth - this.width/2;
}
}
}
}
//Gravity flip
if (!gravity) {
dy *= flipGravity;
grounded = false;
}
}
private function landOnPlatform() {
for (var i:int=0;i<platforms.length;i++) {
/*if (this.hitTestObject(platforms[i])) {
dy = 0;
grounded = true;
this.y = platforms[i].y;
break;
}*/
if (this.hitTestObject(tilesTop[i])) {
dy = 0;
grounded = true;
this.y = tilesTop[i].y;
break;
}
else if (this.hitTestObject(tilesBtm[i])) {
dy = 0;
grounded = true;
this.y = tilesBtm[i].y;
break;
}
else if (this.hitTestObject(tilesLeft[i])) {
dy = 0;
grounded = true;
this.x = tilesLeft[i].x;
break;
}
else if (this.hitTestObject(tilesRight[i])) {
dy = 0;
grounded = true;
this.x = tilesRight[i].x;
break;
}
}
}
}
}
Это класс игрока выше
У меня есть gameloop работает в главном классе и его вызов функции перемещения игрока.
Поэтому, когда сила тяжести ложна, игрок будет плавать, и когда сила тяжести верна, игрок упадет. Я написал код, когда dy умножается на -1, но когда я нажимаю пробел, ничего не происходит.
Это все файлы, которые у меня есть. Link
Есть ли вопрос где-то там? – jacksonecac
@jacksonecac Я отредактировал вопрос извините. Вопрос в том, как я могу создать механизм гравитации в игре, похожий на старую игру под названием гравитационный парень –
@Jerrybibo Я отредактировал вопрос, пожалуйста, посмотрите –