camera_shake.lua

来自「这是整套横扫千军3D版游戏的源码」· LUA 代码 · 共 103 行

LUA
103
字号
--------------------------------------------------------------------------------------------------------------------------------------------------------------------  file:    camera_shake.lua--  brief:   Camera shakes--  author:  Dave Rodgers----  Copyright (C) 2007.--  Licensed under the terms of the GNU GPL, v2 or later.------------------------------------------------------------------------------------------------------------------------------------------------------------------function widget:GetInfo()  return {    name      = "CameraShake",    desc      = "Camera shakes",    author    = "trepan",    date      = "Jun 15, 2007",    license   = "GNU GPL, v2 or later",    layer     = 0,    enabled   = false  --  loaded by default?  }end------------------------------------------------------------------------------------------------------------------------------------------------------------------ Automatically generated local definitionslocal spSetCameraOffset      = Spring.SetCameraOffsetlocal spSetShockFrontFactors = Spring.SetShockFrontFactors----------------------------------------------------------------------------------------------------------------------------------------------------------------local exps = 0local shake = 0local powerScale = 200local decayFactor = 5local minArea  = 32  -- weapon's area of effectlocal minPower = (0.02 / powerScale)local distAdj  = 100----------------------------------------------------------------------------------------------------------------------------------------------------------------function widget:Initialize()  -- required for ShockFront() call-ins  -- (threshold uses the 1/d^2 power)  spSetShockFrontFactors(minArea, minPower, distAdj)endfunction widget:Shutdown()  spSetCameraOffset()endfunction widget:ShockFront(power, dx, dy, dz)  exps = exps + 1  power = power * powerScale  if (power > 10) then    power = 10  end  shake = shake + powerendlocal function birand(val)  return val * (1.0 - (0.002 * math.random(1000)))endfunction widget:Update(dt)  local t = widgetHandler:GetHourTimer()  local pShake = shake * 0.1  local tShake = shake * 0.025  local px, py, pz, tx, ty, tz =    birand(pShake),    birand(pShake),    birand(pShake),    birand(tShake),    birand(tShake)  spSetCameraOffset(px, py, pz, tx, ty)  local decay = (1 - (decayFactor * dt))  if (decay < 0) then    decay = 0  end  shake = shake * decayend----------------------------------------------------------------------------------------------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?