add feed obj
This commit is contained in:
parent
784e654f07
commit
e19943e9f2
BIN
data/images/tongue.png
Normal file
BIN
data/images/tongue.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 736 B |
41
data/scripts/classes/feed.lua
Normal file
41
data/scripts/classes/feed.lua
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
local Vector3 = require "types.vector3"
|
||||||
|
local util = require "util"
|
||||||
|
|
||||||
|
local TEXTURE = "images/tongue.png"
|
||||||
|
|
||||||
|
local Feed = {
|
||||||
|
position = {},
|
||||||
|
direction = {},
|
||||||
|
velocity = {},
|
||||||
|
landed = false,
|
||||||
|
|
||||||
|
speed = 0.15,
|
||||||
|
}
|
||||||
|
|
||||||
|
Feed.__index = Feed
|
||||||
|
|
||||||
|
function Feed.new(p_position, p_direction)
|
||||||
|
local f = util.shallow_copy(Feed)
|
||||||
|
f.position = p_position:copy()
|
||||||
|
f.direction = p_direction:copy()
|
||||||
|
f.velocity = f.direction * f.speed
|
||||||
|
f.velocity.y = 0.1
|
||||||
|
|
||||||
|
return setmetatable(f, Feed)
|
||||||
|
end
|
||||||
|
|
||||||
|
function Feed:tick(ctx)
|
||||||
|
if not self.landed then
|
||||||
|
-- gravity
|
||||||
|
self.velocity.y = math.max(self.velocity.y - 0.02, -0.2)
|
||||||
|
self.position = self.position + self.velocity
|
||||||
|
end
|
||||||
|
|
||||||
|
if self.position.y <= 0.2 and not self.landed then
|
||||||
|
self.position.y = 0.2
|
||||||
|
self.landed = true
|
||||||
|
end
|
||||||
|
draw_billboard{position = self.position, texture = TEXTURE, size = Vector3(0.2, 0.2)}
|
||||||
|
end
|
||||||
|
|
||||||
|
return Feed
|
@ -1,6 +1,13 @@
|
|||||||
local player = require "classes.player"
|
local player = require "classes.player"
|
||||||
local util = require "util"
|
local util = require "util"
|
||||||
local Vector3 = require "types.vector3"
|
local Vector3 = require "types.vector3"
|
||||||
|
local Feed = require "classes.feed"
|
||||||
|
|
||||||
|
local feed = {}
|
||||||
|
|
||||||
|
local function create_feed(position, direction)
|
||||||
|
table.insert(feed, Feed.new(position, direction))
|
||||||
|
end
|
||||||
|
|
||||||
-- called every frame, with constant delta time
|
-- called every frame, with constant delta time
|
||||||
function game_tick()
|
function game_tick()
|
||||||
@ -8,13 +15,9 @@ function game_tick()
|
|||||||
if ctx.initialization_needed then
|
if ctx.initialization_needed then
|
||||||
-- ctx.udata persists on reload
|
-- ctx.udata persists on reload
|
||||||
ctx.udata = {
|
ctx.udata = {
|
||||||
capture = false
|
capture = false,
|
||||||
}
|
}
|
||||||
player.ThrowPressed:connect(
|
player.ThrowPressed:connect(create_feed)
|
||||||
function (position, direction)
|
|
||||||
print(position, " ", direction)
|
|
||||||
end
|
|
||||||
)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
ctx.mouse_capture = ctx.udata.capture
|
ctx.mouse_capture = ctx.udata.capture
|
||||||
@ -24,10 +27,14 @@ function game_tick()
|
|||||||
ctx.udata.capture = not ctx.udata.capture
|
ctx.udata.capture = not ctx.udata.capture
|
||||||
end
|
end
|
||||||
|
|
||||||
|
for _, v in pairs(feed) do
|
||||||
|
v:tick(ctx)
|
||||||
|
end
|
||||||
|
|
||||||
player:tick(ctx)
|
player:tick(ctx)
|
||||||
-- draw_camera{position = Vector3(0, 1, 0), direction = Vector3.FORWARD}
|
-- draw_camera{position = Vector3(0, 1, 0), direction = Vector3.FORWARD}
|
||||||
-- draw ground
|
-- draw ground
|
||||||
local q = util.create_plane_quad(Vector3(0, 0, 0), Vector3.UP, 10)
|
local q = util.create_plane_quad(Vector3(0, 0, 0), Vector3.UP, 20)
|
||||||
local params = {
|
local params = {
|
||||||
texture = "images/measure001a.png",
|
texture = "images/measure001a.png",
|
||||||
texture_region = { x = 0, y = 0, w = 512, h = 512 },
|
texture_region = { x = 0, y = 0, w = 512, h = 512 },
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
--- @field x number
|
--- @field x number
|
||||||
--- @field y number
|
--- @field y number
|
||||||
--- @field z number
|
--- @field z number
|
||||||
--- @alias vectorlike table | Vector3
|
--- @alias vectorlike number[] | Vector3
|
||||||
local Vector3 = {
|
local Vector3 = {
|
||||||
x = 0,
|
x = 0,
|
||||||
y = 0,
|
y = 0,
|
||||||
|
Loading…
Reference in New Issue
Block a user