プラットフォームゲームを作っています。現時点では、重力とプラットフォームを作成しようとしています。グラビティ ダウン パットを取得しましたが、私のキャラクター (プレイヤー) がプラットフォームに衝突すると、すぐに画面上部に戻って再び落下し、プレイヤーがプラットフォームに触れるたびに繰り返されます。これが私のコードです:
package {
import flash.display.MovieClip;
import flash.events.KeyboardEvent;
import flash.events.Event;
import flash.ui.Keyboard;
public class GameCode extends MovieClip {
var upKey:Boolean;
var leftKey:Boolean;
var rightKey:Boolean;
var jump:Boolean = false;
var xvelocity:int = 10;
var yvelocity:int = 0;
var gravity:Number = 7;
var startPosY:int;
var startPosX:int;
var lastPosY:int;
var lastPosX:int;
public function GameCode() {
// constructor code
}
public function startGame(){
stage.addEventListener(KeyboardEvent.KEY_UP, checkKeyUp);
stage.addEventListener(KeyboardEvent.KEY_DOWN, checkKeyDown);
stage.addEventListener(Event.ENTER_FRAME, update);
}
function update(evt:Event){
moveCharacter();
yvelocity += gravity;
for (var i:int = 0; i < 10; i++){
if (!platform.hitTestObject(player)){
player.y = yvelocity;
}
if (platform.hitTestObject(player)){
yvelocity = 0;
player.y--;
}
}
}
function moveCharacter(){
lastPosY = player.y;
lastPosX = player.x;
if (leftKey == true){
player.x -= xvelocity;
}
if (rightKey == true){
player.x += xvelocity;
}
if (upKey == true){
if (jump == true){
player.y
}
}
}
function checkKeyDown(evt:KeyboardEvent){
if (evt.keyCode == Keyboard.LEFT){
leftKey = true;
}
else if (evt.keyCode == Keyboard.RIGHT){
rightKey = true;
}
else if (evt.keyCode == Keyboard.UP){
upKey = true;
}
}
function checkKeyUp(evt:KeyboardEvent){
if (evt.keyCode == Keyboard.LEFT){
leftKey = false;
}
else if (evt.keyCode == Keyboard.RIGHT){
rightKey = false;
}
else if (evt.keyCode == Keyboard.UP){
upKey = false;
}
}
}
}
キャラクターのインスタンス名は player で、プラットフォームのインスタンスは単なる platform です。明らかに、これを変更する方法について助けが必要です。私が望むのは、キャラクターが重力で落下し、プラットフォームに着陸し、動き回ることができ、落下するとキャラクターが底に落ちることです.