加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
一个用RMMV制作的简单小游戏,是本人用来进行脚本试炼用的,基本可以算小成功,主要的目的是研究RPG Maker MV的各种底层Sprite、Scene等图片与显示位元的生成方法及刷新、监测工作。
使用方法:新建一个RPG Maker MV工程,将压缩包解压,替换掉原来的文件即可。
规则简单,上下左右移动青蛙,五只青蛙全部过河即算胜利,重新游戏;但若中途挂掉则会令已回家的青蛙扣除一只。在草丛中纵向停留可以隐身,避开蛇的攻击。
关键代码如下,基本上都是简单的Sprite、Scene等物件生成,供参考:
function Scene_Frogger(){ this.initialize.apply(this, arguments); } Scene_Frogger.prototype = Object.create(Scene_Base.prototype); Scene_Frogger.prototype.constructor = Scene_Frogger; Scene_Frogger.prototype.initialize = function(){ Scene_Base.prototype.initialize.call(this); }; Scene_Frogger.prototype.create = function(){ Scene_Base.prototype.create.call(this); this.createBackground(); this.createTrunks(); this.createFrogHome(); this.createFrog(); this.createCars(); this.createTrucks(); this.createViper(); }; Scene_Frogger.prototype.start = function(){ Scene_Base.prototype.start.call(this); SceneManager.clearStack(); }; Scene_Frogger.prototype.update = function(){ //刷新场景内的所有物品 if(this._frog.restFrame <= 0){ //1.刷新小汽车 this.updateCars(); //2.刷新大汽车 this.updateTrucks(); //3.刷新蛇(注:蛇的行动较为特殊,当青蛙纵向趴在草地上时,蛇看不见,但青蛙如横向移动,就会暴露给蛇) this.updateViper(); //4.刷新木桩 this.updateTrunks(); //5.刷新青蛙 this.updateFrog(); } Scene_Base.prototype.update.call(this); }; //青蛙过河小游戏用到的图片位元-------------------------------------------------------- // Sprite_Cars // // 3.小汽车 //第一步:先命名 function Sprite_Cars(){ this.initialize.apply(this, arguments); } //第二步:规定其父类及调用方法 Sprite_Cars.prototype = Object.create(Sprite_FrogBase.prototype); Sprite_Cars.prototype.constructor = Sprite_Cars; //第三步:生成的时候做什么?(方向,x, y) Sprite_Cars.prototype.initialize = function(direction, x, y){ Sprite_FrogBase.prototype.initialize.call(this); this.kindId = Sprite_FrogBase.KIND_CAR; this.direction = direction; this.bitmap = ImageManager.loadSystem('Frogger01'); this.anchor.x = 0.5; this.anchor.y = 0.5; this.rotation = (direction == 1 ? Math.PI : 0); this.x = x; this.y = y; this.collapseWidth = 96; this.collapseHeight = 48; }; //第四步:每帧刷新的时候做什么? Sprite_Cars.prototype.update = function(){ Sprite_FrogBase.prototype.update.call(this); };
function Scene_Frogger(){
this.initialize.apply(this, arguments);
}
Scene_Frogger.prototype = Object.create(Scene_Base.prototype);
Scene_Frogger.prototype.constructor = Scene_Frogger;
Scene_Frogger.prototype.initialize = function(){
Scene_Base.prototype.initialize.call(this);
};
Scene_Frogger.prototype.create = function(){
Scene_Base.prototype.create.call(this);
this.createBackground();
this.createTrunks();
this.createFrogHome();
this.createFrog();
this.createCars();
this.createTrucks();
this.createViper();
};
Scene_Frogger.prototype.start = function(){
Scene_Base.prototype.start.call(this);
SceneManager.clearStack();
};
Scene_Frogger.prototype.update = function(){
//刷新场景内的所有物品
if(this._frog.restFrame <= 0){
//1.刷新小汽车
this.updateCars();
//2.刷新大汽车
this.updateTrucks();
//3.刷新蛇(注:蛇的行动较为特殊,当青蛙纵向趴在草地上时,蛇看不见,但青蛙如横向移动,就会暴露给蛇)
this.updateViper();
//4.刷新木桩
this.updateTrunks();
//5.刷新青蛙
this.updateFrog();
}
Scene_Base.prototype.update.call(this);
};
//青蛙过河小游戏用到的图片位元--------------------------------------------------------
// Sprite_Cars
//
// 3.小汽车
//第一步:先命名
function Sprite_Cars(){
this.initialize.apply(this, arguments);
}
//第二步:规定其父类及调用方法
Sprite_Cars.prototype = Object.create(Sprite_FrogBase.prototype);
Sprite_Cars.prototype.constructor = Sprite_Cars;
//第三步:生成的时候做什么?(方向,x, y)
Sprite_Cars.prototype.initialize = function(direction, x, y){
Sprite_FrogBase.prototype.initialize.call(this);
this.kindId = Sprite_FrogBase.KIND_CAR;
this.direction = direction;
this.bitmap = ImageManager.loadSystem('Frogger01');
this.anchor.x = 0.5;
this.anchor.y = 0.5;
this.rotation = (direction == 1 ? Math.PI : 0);
this.x = x;
this.y = y;
this.collapseWidth = 96;
this.collapseHeight = 48;
};
//第四步:每帧刷新的时候做什么?
Sprite_Cars.prototype.update = function(){
Sprite_FrogBase.prototype.update.call(this);
};
附:发帖的时候我纠结了一下,到底应该放在原创游戏区还是讨论区。。。不过仔细想想,这个小游戏还是实验性质,只能算个半成品,可能还是发到技术讨论区比较合适。如果版主觉得放在这里不好的话可以移走。
|