私の問題は、私がやっているフラッシュの _saw は、_boundary(floor) がステージで静的であるのとは異なり、_player と一緒に移動することです。
public class PiggyRun extends MovieClip
{
private var _vy:Number;
private var _vx:Number;
スクリプト内の私のプレーヤー
public var _player:player;
public var _boundary:Boundary;
public var _rp:RG;
私は境界と同じように見たと宣言しました
public var _saw:saw;
public var _jump:Boolean=true;
public function PiggyRun():void
{
_rp.visible=false;
_vx=0;
_vy=0;
_player.gotoAndStop('walking');
stage.focus= stage;
this.addEventListener(Event.ENTER_FRAME,enterFrameHandler);
stage.addEventListener(KeyboardEvent.KEY_DOWN, kDHandler);
stage.addEventListener(KeyboardEvent.KEY_UP, kUHandler);
}
private function enterFrameHandler(e:Event):void
{
ランニングゲームなので×を増やしました
_vy+=2;
_vx+=.5;
if(_vx>10)
{
_vx=10
}
_player.x+=_vx;
_player.y+=_vy;
borders();
stageFocus();
sawblade();
}
押し下げ時のコントロール
private function kDHandler(e:KeyboardEvent):void
{
switch(e.keyCode)
{
case 38:
if(_jump){
_jump=false;
_vy=-20;
}
break;
default:
}
}
この機能の内容を削除しました
private function kUHandler(e:KeyboardEvent):void
{
switch(e.keyCode)
{
}
}
private function borders():void
{
if(_vy > 0)
{
if (_player.y>stage.stageHeight)
{
_player.x=_rp.x;
_player.y=_rp.y;
_boundary.x=0;
_boundary.y=0;
_saw.x=0;
_saw.y=0;
_vy=0;
_vx=0;
}else{
var border:Boolean=false;
if(_boundary.hitTestPoint(_player.x,_player.y,true))
{
border=true;
}
if (border)
{
while(border)
{
_player.y-=0.05;
_jump=true;
border=false;
if(_boundary.hitTestPoint(_player.x,_player.y,true))
{
border=true;
}
}
_vy=0;
}
}
}
}
プレイヤーが鋸刃を叩いた場合、_rp の場所にリスポーンするこの関数を配置しましたが、悲しいことに、2 つのムービークリップが同時に移動するため、強制的に _saw を一緒に配置しても機能しません。
private function sawblade():void
{
if(_vy > 0)
{
if (_player.y>stage.stageHeight)
{
_player.x=_rp.x;
_player.y=_rp.y;
_boundary.x=0;
_boundary.y=0;
_saw.x=0;
_saw.y=0;
_vy=0;
_vx=0;
}else{
var sawn:Boolean=false;
if(_saw.hitTestPoint(_player.x,_player.y,true))
{
sawn=true;
}
if (sawn)
{
while(sawn)
{
_player.x=_rp.x;
_player.y=_rp.y;
_boundary.x=0;
_boundary.y=0;
_saw.x=0;
_saw.y=0;
_vy=0;
_vx=0;
_jump=true;
sawn=false;
if(_saw.hitTestPoint(_player.x,_player.y,true))
{
sawn=true;
}
}
_vy=0;
}
}
}
}
private function stageFocus():void
{
_boundary.x+=(stage.stageWidth * 0.5)-_player.x;
_player.x=stage.stageWidth*0.5;
_saw.x=5;
}
}