안녕하세요 저는 오래된 미니 클립 게임 중력 녀석과 같은 정비공으로 뒤집는 중력을 지닌 게임을 만들려고 노력하고 있지만 작동하지 않는 것 같습니다. 제발 도와주세요중력을 뒤집는 정비공 (액션 스크립트 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 질문을 편집하십시오. –