为2D物体移动添加烟尘效果

该文章内容主要包括场景的搭建,人物的移动,以及粒子系统实现烟雾效果
场景搭建
地板创建

StaticBody2D
是刚体节点,在其下方创建一个Polygon2D
拖出一个长方形作为地板,然后创建CollisionShape2D并且大小与Polygon2D
一致,为其添加碰撞属性
人物创建

人物移动
extends KinematicBody2D
var acc = 1500
var max_speed = 400
var gravity = 800
var jump_force = 300
var fri = 10
var air_fri = 2
var move = Vector2.ZERO
var dir
func _physics_process(delta):
if Input.is_action_pressed("ui_left"):
dir = -1
elfi Input.is_action_pressed("ui_right"):
dir = 1
else:
dir = 0
if dir != 0:
move.x += dir * acc * delta
move.x = clamp(move.x, -max_peed, max_speed)
if is_on_floor():
# 在移动并且在地面上时触发粒子
$Particles2D.emitting = true
else:
$Particles2D.emitting = false
# 根据移动方向设置粒子的发射角度
if dir = 0:
$Particles2D.rotation_degress = -25
else:
$Particles2D.rotation_degress = 205
else:
if is_on_floor():
move.x = lerp(move.x, 0, fri*delta)
else:
move.x = lerp(move.x, 0, air_fri * delta)
move.y += gravity * delta
# 可以检测碰撞
move = move_and_slde(move, Vector2.UP)
烟雾效果
创建一个粒子节点Particles2D
,根据下面的属性节点调整粒子的发射
- 创建材质: Material属性,创建了材质之后在窗口就可以发现正在发射粒子
- 修改重力: Material.Gravity, 重力属性,有x、y、z,设置y为0,就不会粒子往下掉了,y为负数,则会往上发射
- 修改初速度:
Material.Initial Velocity
, 设置为一个正数,就会往右边开始发射 - 修改发射扩张角度:
Material.Direction.Spread
- 旋转发射方向:
Transform.Rotation Degress
- 图片素材:
Texture
,设置自定义的图片替换默认粒子样式,如果素材太模糊,点击素材后,选择import,设置Preset
值为2D Pixel
, 然后选择Reimport重新导入即可 - 添加渐变效果,在Color属性中选择线性渐变
GradientTexture
并且设置透明度即可 - 修改粒子生命周期时间:
Time
属性为整个存活时间,调整粒子速度:Speed Scale
属性 - 使用全局坐标计算粒子位置:
Local Coords
属性,点击取消,使用全局坐标计算,移动人物的时候才不会让粒子也跟着移动 - 默认是否触发粒子:
Emitting
属性,将它取消勾选,然后在玩家移动时才发生粒子
