2008年08月16日
歯車作れるかな
second life physical で google ってみたら
-----
YouTube - Physical Gears in Second Life
-----
を見つけた
-----
へ~ 歯車作れるんじゃん
-----
というわけで 自分でも試してみることにした
-----
-----
最初手作業で歯を付けようとしていて 角度のグリッドで 30度が選べないことに気がつき こんなのやってられるか~
-----
と最初からやり直そうとリンクを外したら 物理にしてたので こんなことになってしまった w
-----
ここは 歯は rez するしかないだろうと 試行錯誤で
-----
-----
ようやく 歯 のレイアウトに成功 w
-----
-----
さて動くかな?
-----
一方の歯車に 回転させるスクリプトを入れます
-----
-----
結構滑らかに動きます
-----
歯車と歯車との間隔をあまり近づけると止まってしまうようです
-----
-----
-----
ギア比 変えたりすると面白いかも w
-----
-----
YouTube - Physical Gears in Second Life
-----
を見つけた
-----
へ~ 歯車作れるんじゃん
-----
というわけで 自分でも試してみることにした
-----
-----
最初手作業で歯を付けようとしていて 角度のグリッドで 30度が選べないことに気がつき こんなのやってられるか~
-----
と最初からやり直そうとリンクを外したら 物理にしてたので こんなことになってしまった w
-----
ここは 歯は rez するしかないだろうと 試行錯誤で
//をでっちあげ
// File: MakingGear.lsl
// Date Author number of nodes
// 2008/8/15 walkinglint 15
//
integer num_of_teeth = 12;
float gear_body = 3;
float teeth = 0.5;
float r;
integer i;
default {
state_entry() {
r = (gear_body + teeth) / 2.0 - 0.05;
}
touch_start(integer total_number) {
float deg = 360.0 / num_of_teeth;
rotation rot = llEuler2Rot(<0.0, 90.0, 0.0> * DEG_TO_RAD);
for (i = 0; i < num_of_teeth; i++) {
llRezObject("teeth", llGetPos() +llSin(deg * i * DEG_TO_RAD), 0> * r, ZERO_VECTOR, rot, 1);
rot *= llEuler2Rot(<0.0, 0.0, deg> * DEG_TO_RAD);
}
}
}
-----
-----
ようやく 歯 のレイアウトに成功 w
-----
-----
さて動くかな?
-----
一方の歯車に 回転させるスクリプトを入れます
//-----
// File: Gear.lsl
// Date Author number of nodes
// 2008/8/15 walkinglint 4
//
integer is_moving = FALSE;
default {
touch_start(integer total_number) {
is_moving = !is_moving;
if (is_moving) {
llTargetOmega(<0.0, 0.0, 1.0>, 1.0, 1.0);
} else {
llTargetOmega(<0.0, 0.0, 1.0>, 0.0, 1.0);
}
}
}
-----
-----
結構滑らかに動きます
-----
歯車と歯車との間隔をあまり近づけると止まってしまうようです
-----
-----
-----
ギア比 変えたりすると面白いかも w
-----
Posted by walkinglint at 14:17│Comments(0)
│walking のスクリプティング講座