我正在创建简单的 Flash 游戏,我只是制作了角色控制(向左、向右和跳跃)。当我添加重力时,我的角色会从舞台上掉下来。
我已经画了地板,导入到图书馆,但我不知道代码应该是什么样子。
我的地板被称为“地面”,我添加了 AS Linkage “地面”。
现在我的代码看起来像:(注意:我的角色被命名为“英雄”)
public class Script extends MovieClip{ // start the script
private const gravity:int = 1;
private const max_speed:int = 8;
private const walkspeed:int = 4;
private const jumpspeed:int = 10;
private var forecast_x:int;
private var forecast_y:int;
private const start_x:int = 50;
private const start_y:int = 50;
private var left:Boolean;
private var up:Boolean;
private var right:Boolean;
private var space:Boolean;
private var level:Array = new Array();
private var Map_data:Data = new Data; // create a version of the Data.as
private var Hero_col:collision_manager = new collision_manager;
private var Hero:hero = new hero;
public function Script(){ // the init (will only be runned once)
//BuildMap();
create_hero();
addEventListener(Event.ENTER_FRAME, main);
stage.addEventListener(KeyboardEvent.KEY_DOWN, key_down);
stage.addEventListener(KeyboardEvent.KEY_UP, key_up);
Hero_col.Setup(25,level,Hero);
}
private function main(event:Event){
update_hero();
}
private function key_down(event:KeyboardEvent){
if(event.keyCode == 37){
left = true;
}
if(event.keyCode == 38){
up = true;
}
if(event.keyCode == 39){
right = true;
}
}
private function key_up(event:KeyboardEvent){
if(event.keyCode == 37){
left = false;
}
if(event.keyCode == 38){
up = false;
}
if(event.keyCode == 39){
right = false;
}
}
private function create_hero(){
addChild(Hero);
Hero.x = start_x;
Hero.y = start_y;
Hero.x_speed = 0;
Hero.y_speed = 0;
}
private function setDirection(param) {
if (param == 0) {
Hero.scaleX = 1;
} else {
Hero.scaleX = -1;
}
}
private function update_hero(){
Hero.y_speed += gravity;
if(left){
Hero.x_speed = -walkspeed;
setDirection(1);
}
if(right){
Hero.x_speed = walkspeed;
setDirection(0);
}
if(up && Hero_col.can_jump){
Hero.y_speed = -jumpspeed;
}
if(Hero.y_speed > max_speed){
Hero.y_speed = max_speed;
}
forecast_y = Hero.y + Hero.y_speed;
forecast_x = Hero.x + Hero.x_speed;
Hero_col.solve_all(forecast_x, forecast_y);
Hero.x_speed = 0;
}
谢谢你的帮助。