Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //companion snake
- lock cent to facing:vector * 5.
- set c to 6.
- set vd to list().
- 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)).
- set gr to 0.004. set rnd to 0.1. set dr to 0.02.
- set vd_v to facing:vector * random().
- when true then {
- for i in range(c-1,0,1) {
- set col to vd[i-1]:color. set col:a to ((c-i)/c)^2. set vd[i]:color to col.
- set vd[i]:vec to (vd[i-1]:start - vd[i]:start) * 1.2.
- set vd[i]:start to vd[i-1]:start.
- }
- 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.
- set vd[0]:vec to vd_v * 3.
- set vd[0]:start to vd[0]:start + vd_v.
- set vd[0]:color to hsva(min(1,vd_v:mag/2),1,1,1).
- return not rcs.
- }
- //companion snake 2
- set vd2 to list().
- for i in range(c) vd2:add(vecdraw(facing:starvector * -15, facing:vector, hsva(1,1,1,(c-i)/c), "", 1, true, ((c-i)/c) * 0.4 + 0.1, false)).
- set gr2 to 0.02.set dr2 to 0.03.
- set vd_v2 to facing:vector.
- when true then {
- for i in range(c-1,0,1) {
- set col to vd2[i-1]:color. set col:a to ((c-i)/c)^2. set vd2[i]:color to col.
- set vd2[i]:vec to (vd2[i-1]:start - vd2[i]:start) * 1.2.
- set vd2[i]:start to vd2[i-1]:start.
- }
- set vd_v2 to vd_v2 + (vd2[0]:start-vd[0]:start) * -gr2 + vd_v2:normalized*vd_v2:sqrmagnitude * -dr2.
- set vd2[0]:vec to vd_v2 * 3.
- set vd2[0]:start to vd2[0]:start + vd_v2.
- set vd2[0]:color to hsva(min(1,vd_v2:mag/2),1,1,1).
- return not rcs.
- }
- //bouncer
- 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. }
- 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. }
Add Comment
Please, Sign In to add comment