QRコード
QRCODE
アクセスカウンタ
読者登録
メールアドレスを入力して登録する事で、このブログの新着エントリーをメールでお届けいたします。解除は→こちら
現在の読者数 0人
オーナーへメッセージ
slMame › 一日一膳腹八分目 › 2009年08月02日

  

Posted by at

2009年08月02日

パーティクル設定項目について

パーティクルの設定項目で特にわかりにくかったものを、忘れないためにメモ。



PSYS_SRC_PATTERN_ANGLE
PSYS_SRC_ANGLE_BEGINPSYS_SRC_ANGLE_ENDで指定された平坦な扇形(V字?)にパーティクルを噴霧。
この際、放出平面はYZ平面上となり、PSYS_SRC_ANGLE_BEGINPSYS_SRC_ANGLE_ENDはいずれもZ軸が0度となる角度(ラジアン)。





PSYS_SRC_PATTERN_ANGLE_CONE
PSYS_SRC_ANGLE_BEGINPSYS_SRC_ANGLE_ENDで指定されたコーン(円錐?)にパーティクルを噴霧。
PSYS_SRC_ANGLE_BEGINPSYS_SRC_ANGLE_ENDはいずれもZ軸が0度となる角度(ラジアン)。


PSYS_SRC_BURST_RADIUS
噴霧が開始される位置の中心からの距離(半径・メートル)。
ただし、オブジェクトと共に移動するマスク(PSYS_PART_FOLLOW_SRC_MASK)が指定されている場合は無視されてしまうので注意。


PSYS_PART_FOLLOW_VELOCITY_MASK
指定するとパーティクルの上端が常に進行方向を向くようになります。
なので、上向きの矢印などをテクスチャに指定しておくと、弓矢が飛んでいく様な見え方。  


Posted by RBK Drachnyd(しお) at 15:26Comments(0)忘れない為に。。

2009年08月02日

物体の回転その2(対空砲)

llRotBetween()という素敵な関数を見つけたのと、箱が傾いて見えるのが気に入らなかったので傾かない箱を。。。



XY平面上でのX軸(単位ベクトル<1,0,0>)からの回転(水平回転)
rotation newRot=llRotBetween(<1,0,0>,<norm.x,norm.y,0>);

垂直回転
rotation newRot2=llEuler2Rot(<0,llAcos(norm.z)-PI/2.0,0>);

回転実行(順番が大事)
llSetRot(newRot2*newRot);

だいぶシンプルになりました。が、相変わらず思考はvector。。。^^;
ホントにいいのかな、これで。。(笑



対空砲の動きをする箱の中身

default
{
state_entry()
{
llSensorRepeat("","",AGENT|ACTIVE,30,PI,0.1);
}
sensor(integer detectedNum)
{
if (llDetectedKey(0)==llGetOwner() && llDetectedKey(0)!=NULL_KEY)
{
vector targetVector=llDetectedPos(0)-llGetPos();
vector norm=llVecNorm(targetVector);
rotation newRot=llRotBetween(<1,0,0>,<norm.x,norm.y,0>);
rotation newRot2=llEuler2Rot(<0,llAcos(norm.z)-PI/2.0,0>);
llSetRot(newRot2*newRot);
}
}
no_sensor()
{
}
}

  


Posted by RBK Drachnyd(しお) at 12:12Comments(0)算数