1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
local obj = require "obj"
local util = require 'util'
local x_obj = {hitbox = 4}
function x_obj:draw()
set_color(0.5, 1, 0.8)
line(-4, 2, 0, 0, -2, 4, -4, 2)
line(0, 0, 2, 4, 4, 2, 0, 0)
line(0, 0, 4, -2, 2, -4, 0, 0)
line(0, 0, -2, -4, -4, -2, 0, 0)
end
local range = 40
function x_obj:tick()
local x, y = unpack(self.data.pos)
for o in obj.in_circle(x, y, range) do
if o ~= self then
local px, py = self:observe_pos(o)
local mag = util.magnitude{px, py}
local dx, dy = px / mag, py / mag
self:avel_to_accel(o, dx * mag/range/10, dy * mag/range/10)
end
end
end
return {x = x_obj}
|