mouseXとmouseYの位置を直接変更できないため、私のプロジェクトの開発に不可欠な難題です。読み取り専用変数。Flash AS3:マウスを特定の境界内に維持する
基本的に、特定のインスタンスがアクティブなときに特定の三角形の領域内でマウスを動かすことができます。後者のビットではうまく管理できますが、マウスの動きやマウスの動きが制限されています。
これまで行ってきたことは次のとおりです。 1. Mouse.MOUSE_MOVEに移動する必要があることを認めていますが、ライブラリmoveclipをEvent.ENTER_FRAMEイベントのmouseXおよびmouseY位置に割り当てます。 (これはまだ問題ありません) 2. Corey O'Neils衝突検出キットを使用して、十字線/カーソルを使って領域の境界線のインスタンスをヒットテストします。 3.カーソルを適切にオフセットし、標準ブール値をfalseに設定して、カーソルがカーソルに何度も何度も戻ってくることを避けます。
私の問題は、マウスの動きを許すのが最善の方法であるかどうかわかりません。誰でも私にこれを行うための最善の方法のヒントを教えてもらえますか、必要に応じて、マウスの動きを制限するのが簡単な別の方向を教えてください。
これは、ユーザーがトップダウン(ish)シューティングゲームでキャラクターとの非現実的な方向を目指すのを止めることです。
Corey O'NeilのCollision Detection Kitに慣れていない人には、ビットマップ(または多分ベクトル)の衝突テストの設定済みの設定だと思います。間違っている可能性があります。どのように動作するかについての詳細はわかりませんが、基本的な実装だけです。
ここがこれまでマウスの動きに関する私のコードです:
import flash.ui.Mouse;
import flash.events.event
import com.coreyoneil.collision.CollisionList;
Mouse.hide();
var c:crosshair = new crosshair();
addchild(c);
var myCollisionList:CollisionList;
myCollisionList = new CollisionList(c); //sets up detection for the object c
myCollisionList.addItem(mcB); // adds mcB to the list of objects to check c's hittest with
function aim(e:Event) {
var collisions:Array = myCollisionList.checkCollisions();
if (collisions.length>0)
{
hashit = true; // tells the program that the mouse has collided with a boundary
c.x += 1;
c.y += 1;
}
else
{
if (hashit == false)
{
c.x = mouseX;
c.y = mouseY;
}
}
}
コードブロックのための謝罪が、私はそれがすべての関連するコードを表示するのが最適です理解 - 私はこれの複雑さについてはよく分かりませんマウスのXおよびY位置の読み取り専用の性質のために発生します。
また、私はclunkyにならない可能性のある解決策を探しています。つまり、マウスがその領域に戻ったらすぐに、マウスの動きは本来のように滑らかになります。マウスの位置に合っていることを意味します(つまり、カーソルは常にマウスに関連しており、マウスが境界を離れると位置は変わりません)。
誰でも私にいくつかのポインタを教えてください。長い質問を申し訳ありません。私はここで少し頭がおかしくなるかもしれませんが、AS3には比較的新しいです - でも、もしあなたが正しい方向を示して両方の論理少し物事のプログラミング面。ここで
等の境界領域を明確にするために、私のステージの図である A diagram of my stage to clarify further http://i40.tinypic.com/2csfivm.png 事前に任意の助けのために非常に多くのおかげで、私は本当に感謝します!
乾杯、ハリー。
私はそのコマンドに完全に慣れていません。私はそれを使用するとき、私はbounds *になることはできません:[あなたはあまりにも、私はそれを実装していることを確認triangleObject境界線ですか? – hazdog
triangleObjectは三角形のスプライトで、線ではありません。すなわち、新しいスプライトを作成し、三角形を描き、それをステージに追加して、インスタンス名をtriangleObjectにします – crooksy88
まだ私はまだ境界内にいると私に教えてもらえません。あなたは小さな事例を盛り上げることができますか?申し訳ありません仲間 – hazdog