Files
evol-assets/scripts/TestScene/Camera.lua
T
2021-06-25 22:09:01 +02:00

67 lines
1.6 KiB
Lua

this.on_init = function()
this.speed = 2.1
this.original_position = this.position
this.angles = Vec3:new()
this.mouse_sens = 0.01
this.cursor_locked = false
end
this.toggleCursor = function()
if this.cursor_locked then
Input.unlockCursor()
else
Input.lockCursor()
end
this.cursor_locked = not this.cursor_locked
end
this.on_update = function()
local deltaMouseMovement = Input.getDeltaMousePos()
this.angles.y = this.angles.y - deltaMouseMovement.x * this.mouse_sens
this.eulerAngles = this.angles
helper = this:getChild('RotationHelper')
if Input.getKeyJustPressed(Input.KeyCode.Enter) then
gotoScene('SideScene')
end
local pos = this.position
if Input.getKeyDown(Input.KeyCode.Up) then
pos = pos + helper.forward * this.speed
end
if Input.getKeyDown(Input.KeyCode.Down) then
pos = pos - helper.forward * this.speed
end
if Input.getKeyDown(Input.KeyCode.Right) then
pos = pos + helper.right * this.speed
end
if Input.getKeyDown(Input.KeyCode.Left) then
pos = pos - helper.right * this.speed
end
local mb0 = Input.getMouseButtonJustPressed(0)
local mb1 = Input.getMouseButtonJustPressed(1)
local mb2 = Input.getMouseButtonJustPressed(2)
if mb0 or mb1 then
hit = rayCast(this.worldPosition, helper.forward, 300)
if(hit.hasHit) then
local hitForce = 1000
rb = hit.object:getComponent(Rigidbody)
if mb0 then
rb:addForce(hit.hitNormal * -hitForce)
elseif mb1 then
rb:addForce(hit.hitNormal * hitForce)
end
end
end
if mb2 then
this.toggleCursor()
end
this.position = pos
end