[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Java3Djp:01482] Re: 衝突判定のトラブル
┼─────────── 【kenko&kirei】 ───────────┼
キラキラ光る、『もっと健康に、もっとキレイになる。』
オープニング記念 ◆アンケート回答者様へ素敵なプレゼント◆
┼──────── http://www.kenko-kirei.com/ ────────┼
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
寺島です.
迅速な対応をいただいたのにもかかわらず,質問した
本人からの返答が遅れた失礼をお詫びします.
登録したメールサーバが使えなかったもので・・.
> processStimulus() の最後で wakeupOn() を実行してもだめですか?
> できれば、お書きになった Behavior が読みたいです。
場合によってはうまくいくこともあるのです.
public class colBH extends Behavior{
private Primitive p;
private boolean colSW = false;
private WakeupOnCollisionEntry wIn;
private WakeupOnCollisionExit wOut;
private WakeupOnCollisionMovement wMove;
public colBH(Primitive pr) {
p = pr;
}
public void initialize(){
wIn = new WakeupOnCollisionEntry(p);
wOut = new WakeupOnCollisionExit(p);
wMove = new WakeupOnCollisionMovement(p);
this.wakeupOn(wIn);
}
public void processStimulus(Enumeration criteria){
colSW = !colSW;
if (colSW) {
System.out.println("Collision-in");
this.wakeupOn(wOut);
}
else {
System.out.println("Collision-out");
this.wakeupOn(wIn);
}
}
}
上のコードでは,Primitiveをつかっていますが,Shape3Dを引数に
とっても同様の結果が出ます.
また,マウスPickingを使って両方の物体を動かせるようにすると,
お互いの干渉ではなく,シーンの中央で出入りしているようなのです.
SchedulingBoundsというのはdetectorの形ではなく,処理の及ぶ
範囲なんですよね?
public void processStimulus(Enumeration criteria){
WakeupOnCollisionMovement wOnM =
(WakeupOnCollisionMovement)criteria.nextElement();
SceneGraphPath npath = wOnM.getTriggeringPath();
Node node = npath.getObject();
System.out.println(node.getUserData());
this.wakeupOn(new WakeupOnCollisionMovement(
p,WakeupOnCollisionMovement.USE_BOUNDS));
}
このようにして衝突対象を確認しようとしたのですが,nullで返って
来てしまい,正しく衝突していないのか,目的のPathがこれでは求め
られていないのか・・と悩んでいます.
> 衝突判定を少しやってみた感想ですが、
> 衝突検知よりも移動ルーチンの方が重要かもしれないと思いました。
移動ルーチンとは・・?
マウスイベントを捕まえてsetTranslation・・などいうことを
自前で作られている方が多いということですか?
p.s.「はじめてのJava 3D」は出版されましたか?