hareqj   ♂  喵他  
 编程让人生更优雅

Godot游戏开发实践之爆炸范围伤害的指数级衰减函数

[图文教程]作者:IT自学不成才
2D  单机游戏  第三人称RPG 

射击炸弹游戏开发中,对炸弹爆炸对周围范围伤害的处理代码。

炸弹范围伤害

采用的是指数级的衰减函数,也就是说距离炸弹爆炸中心越远,伤害衰减的越厉害,更加的符合现实!

# 伤害最大范围
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)

[举报]  赞↑ [0 踩↓ [0
暂无评论
[声明]

初衷和宗旨:共同努力,推动Godot游戏引擎在国内的普及和发展.
1.本站所有内容皆为用户发布,如有涉嫌侵权请联系hareqj#163.com,告知内容右上角所在编号以及侵权证据.
2.禁止发布色情/暴恐/时政/商广/带网址或二维码水印/涉嫌隐私或未经授权的私人图片.
3.举报和投稿:hareqj#163.com

Godot中文社区QQ群
Copyright Godot中文社区 Godott.com All Rights Reserved.
京ICP备13032831号