SHOW:
|
|
- or go back to the newest paste.
1 | //companion snake | |
2 | - | set keepVD to true. |
2 | + | |
3 | set c to 6. | |
4 | - | set c to 15. |
4 | + | |
5 | for i in range(c) vd:add(vecdraw(facing:starvector * 15, facing:vector, hsva(1,1,1,(c-i)/c), "", 1, true, ((c-i)/c) * 0.4 + 0.15, false)). | |
6 | set gr to 0.004. set rnd to 0.1. set dr to 0.02. | |
7 | - | set gr to 0.004. //"gravity" - the force that it pulls toward "cent" position |
7 | + | |
8 | - | set rnd to 0.2. //random force applied every tick |
8 | + | |
9 | - | set dr to 0.02. //drag |
9 | + | |
10 | for i in range(c-1,0,1) { | |
11 | - | set cam to addons:camera:flightcamera. |
11 | + | set col to vd[i-1]:color. set col:a to ((c-i)/c)^2. set vd[i]:color to col. |
12 | - | set vw to 4. |
12 | + | set vd[i]:vec to (vd[i-1]:start - vd[i]:start) * 1.2. |
13 | set vd[i]:start to vd[i-1]:start. | |
14 | } | |
15 | set vd_v to vd_v + (vd[0]:start-cent) * random() * -gr + V(random()-0.5,random()-0.5,random()-0.5) * rnd + vd_v:normalized*vd_v:sqrmagnitude * -dr. | |
16 | set vd[0]:vec to vd_v * 3. | |
17 | set vd[0]:start to vd[0]:start + vd_v. | |
18 | set vd[0]:color to hsva(min(1,vd_v:mag/2),1,1,1). | |
19 | return not rcs. | |
20 | } | |
21 | - | set wdt to vw / (vd[0]:start-cam:position):mag. |
21 | + | |
22 | //companion snake 2 | |
23 | - | set col to vd[i-1]:color. set col:a to ((c-i)/c)^2. set vd[i]:color to col. |
23 | + | |
24 | - | set vd[i]:vec to (vd[i-1]:start - vd[i]:start) * 1.2. |
24 | + | |
25 | - | set vd[i]:start to vd[i-1]:start. |
25 | + | |
26 | - | set vd[i]:width to wdt. |
26 | + | |
27 | ||
28 | - | set vd_v to vd_v + (vd[0]:start-cent) * random() * -gr + V(random()-0.5,random()-0.5,random()-0.5) * rnd + vd_v:normalized*vd_v:sqrmagnitude * -dr. |
28 | + | |
29 | - | set vd[0]:vec to vd_v * 3. |
29 | + | |
30 | - | set vd[0]:start to vd[0]:start + vd_v. |
30 | + | |
31 | - | set vd[0]:color to hsva(min(1,vd_v:mag/2),1,1,1). |
31 | + | |
32 | - | set vd[0]:width to wdt. |
32 | + | |
33 | } | |
34 | set vd_v2 to vd_v2 + (vd2[0]:start-vd[0]:start) * -gr2 + vd_v2:normalized*vd_v2:sqrmagnitude * -dr2. | |
35 | set vd2[0]:vec to vd_v2 * 3. | |
36 | set vd2[0]:start to vd2[0]:start + vd_v2. | |
37 | set vd2[0]:color to hsva(min(1,vd_v2:mag/2),1,1,1). | |
38 | - | set vd2[i]:width to wdt. |
38 | + | return not rcs. |
39 | } | |
40 | ||
41 | //bouncer | |
42 | when body:geopositionof(vd[0]:start):terrainheight > (vd[0]:start-body:position):mag - body:radius then { set vd_v to up:vector * vd_v:mag. return not rcs. } | |
43 | when body:geopositionof(vd2[0]:start):terrainheight > (vd2[0]:start-body:position):mag - body:radius then { set vd_v2 to up:vector * vd_v2:mag. return not rcs. } | |
44 | - | set vd2[0]:width to wdt. |
44 | + |