2008年07月01日
cannon and bullet(その3)
SIM plotter と書いていたけれど 要は 弾からの位置情報を そのまま SIM 内の座標でプロットする
-----
アキバだと 砂場の範囲を超えるとエラーになったので ナユタの艀の上から発射してみた
-----
-----
-----
-----
まあ こんな感じか
-----
リストもあげておきます
-----
SIM plotter の方から...
-----
アキバだと 砂場の範囲を超えるとエラーになったので ナユタの艀の上から発射してみた
-----
-----
-----
-----
まあ こんな感じか
-----
リストもあげておきます
-----
SIM plotter の方から...
//大砲の方も不要なコードを削除し速度を調節
// File: sim_plotter.lsl
// Date Author number of nodes
// 2008/7/1 walkinglint 38
// 2008/7/1 walkinglint 86 (plotter2->sim_plotter)
// 2008/6/30 walkinglint 86
// 2008/6/30 walkinglint 61 (plotter->plotter2)
// 2008/6/30 walkinglint 61
//
integer num_of_dots = 20;
integer min_link_num = 2;
integer max_link_num = 21;
float size = 0.5;
integer i;
integer bullet_channel = 2610;
integer listener;
integer cur_link_num;
set_init_pos() {
cur_link_num = min_link_num;
for (i = 0; i < num_of_dots; i++) {
draw_dot(<256.0 / 2, 256.0 / 2, 10.0>);
}
}
draw_dot(vector data) {
float range = size;
vector pos_org = <-(size / 2.0), -(size / 2.0), -(size / 2.0)>;
float scale = size / 256.0;
vector pos = pos_org + data * scale;
llMessageLinked(cur_link_num, 0, (string)pos, NULL_KEY);
cur_link_num++;
if (cur_link_num > max_link_num) {
cur_link_num = min_link_num;
}
}
default {
state_entry() {
set_init_pos();
listener = llListen(bullet_channel, "", "", "");
}
on_rez(integer param) {
llResetScript();
}
touch_start(integer total_number) {
set_init_pos();
}
listen(integer channel, string name, key id, string message) {
draw_dot((vector)message);
}
}
//
// File: cannon2.lsl
// Date Author number of nodes
// 2008/7/1 walkinglint 22
// 2008/7/1 walkinglint 22 (cannon->cannon2)
// 2008/7/1 walkinglint 18
//
float vel = 50.0;
default {
on_rez(integer param) {
llResetScript();
}
touch_start(integer total_number) {
llRezObject("bullet", llGetPos(), -llRot2Fwd(llGetRot()) * vel, ZERO_ROTATION, 1);
}
}
Posted by walkinglint at 19:38│Comments(0)
│walking のスクリプティング講座