mirror of
https://github.com/Rundll86/Dog-Lynx-And-HCN.git
synced 2026-05-28 06:51:54 +08:00
1904edd623
将 randomVector2In 重命名为 sampleInCircle,randomRingPoint 重命名为 sampleInRing,randChoiceWeightsFrom 重命名为 randomChoiceFromWeights,signBeforeStr 重命名为 toSigned 调整蘑菇矿挖爪的攻击力和掉落率,减少基础伤害至0.5,固定掉落率为0.1,优化物品掉落逻辑
32 lines
1.1 KiB
GDScript
32 lines
1.1 KiB
GDScript
@tool
|
|
extends Camera2D
|
|
class_name CameraManager
|
|
|
|
@export var constantOffset: Vector2 = Vector2.ZERO
|
|
|
|
@onready var animator: AnimationPlayer = $"%animator"
|
|
|
|
var shakeIntensity: float = 0
|
|
|
|
static var instance: CameraManager = null
|
|
|
|
func _ready():
|
|
instance = self
|
|
func _physics_process(_delta):
|
|
if is_instance_valid(UIState.player):
|
|
position = UIState.player.position + constantOffset
|
|
position += MathTool.sampleInCircle(shakeIntensity)
|
|
offset += ((get_global_mouse_position() - UIState.player.position).clampf(-100, 100) - offset) * 0.15
|
|
|
|
static func shake(millseconds: float, intensity: float = 10, steper: Callable = func(currentValue, _totalValue, _restPercent): return currentValue):
|
|
var startTime = WorldManager.getTime()
|
|
instance.shakeIntensity = intensity
|
|
await TickTool.until(
|
|
func():
|
|
instance.shakeIntensity = steper.call(instance.shakeIntensity, intensity, 1 - (WorldManager.getTime() - startTime) / millseconds)
|
|
return WorldManager.getTime() - startTime >= millseconds
|
|
)
|
|
instance.shakeIntensity = 0
|
|
static func playAnimation(animation: String):
|
|
instance.animator.play(animation)
|