射击炸弹游戏开发中,对炸弹爆炸对周围范围伤害的处理代码。
采用的是指数级的衰减函数,也就是说距离炸弹爆炸中心越远,伤害衰减的越厉害,更加的符合现实!
# 伤害最大范围 onready var damageRange : float = $CollisionShape2D.shape.radius func _on_Explosion_body_entered(body: Node) -> void: if body.has_method('damaged'): var vector : Vector2 = body.global_position - self.global_position # 指数系数 var ratio : float = 1.0 - pow(vector.length() / damageRange, 0.6) # 伤害和冲击力 var damage := ceil(maxDamage * ratio) var force : Vector2 = maxForce * ratio * vector.normalized() body.damaged(damage, force)