(原) Godot简单制作残影效果

原创文章,请后转载,并注明出处。

Godot 免费跨平台游戏引擎 (一、初见)

Godot 免费跨平台游戏引擎(二、第一个游戏)

Godot 免费跨平台游戏引擎(三、理论是实践的基础)

Godot 免费跨平台游戏引擎 (四、脚本GDScript)

Godot 免费跨平台游戏引擎(五、常用英文)

Godot 免费跨平台游戏引擎(六、一些收集)

Godot 免费跨平台游戏引擎(七、2D)

Godot 免费跨平台游戏引擎(八、网络)

Godot 免费跨平台游戏引擎(九、GUI外观)

Godot 免费跨平台游戏引擎(十、相关资源)

Godot 免费跨平台游戏引擎(十一、源码编译)

Godot 免费跨平台游戏引擎(十二、软件GUI)

Godot简单制作残影效果

Godot ParallaxBackground 视差背景

Godot 使用Light2D实现遮罩效果

码农家的孩子:学字母(Godot改版中)


这里可以看B站网友视频教和

效果如下:

  1. 制作影子场景:

Sprite作为根节点,在下方添加Tween节点(关键是Tween节点)。Tween用于随进间推移,平滑的修改节点的属性,生成动画。

代码如下:

extends Sprite

onready var tween = $Tween

func start():
    #通过tween生成动画:透明度控制,从0.5-0.0
	tween.interpolate_property(self,"modulate",Color(1,1,1,0.6),Color(1,1,1,0),0.5,Tween.TRANS_SINE,Tween.EASE_IN)
	tween.start()

func _on_Tween_tween_completed(object, key):
	queue_free()	#注销自己
  1. 需要用到影子的场景中:
extends Sprite

func _physics_process(delta):
	var ghost = preload("res://Ghost.tscn").instance()
	ghost.texture = load("res://icon.png")
	get_parent().add_child(ghost)
	ghost.global_position = global_position
	ghost.start()
	#这一句实现了精灵跟随鼠标移动
	global_position = global_position.linear_interpolate(get_global_mouse_position(),0.2)  

Tween示例:

#以使2D节点在两个位置之间平滑移动
var tween = get_node("Tween")
tween.interpolate_property($Node2D, "position",
        Vector2(0, 0), Vector2(100, 100), 1,
        Tween.TRANS_LINEAR, Tween.EASE_IN_OUT)
tween.start()
enum  EaseType:
EASE_IN = 0 插值开始缓慢,然后加速到终点.
EASE_OUT = 1 插值开始快速,然后逐渐减慢.
EASE_IN_OUT = 2 [常量EASE_IN]和[常量EASE_OUT]的组合.两端的插值速度最慢.
EASE_OUT_IN = 3 [常量EASE_IN]和[常量EASE_OUT]的组合.两端的插值速度最快.

enum  TransitionType:
TRANS_LINEAR = 0 动画是线性插值的.
TRANS_SINE = 1 使用正弦函数对动画进行插值.
TRANS_QUINT = 2 动画使用五次方(5的幂)函数进行插值.
TRANS_QUART = 3 动画通过四次(至4的幂)函数进行插值.
TRANS_QUAD = 4 动画通过二次函数(以2的幂)插值.
TRANS_EXPO = 5 动画通过指数函数(以x的幂)内插.
TRANS_ELASTIC = 6 动画通过弹性插值,在边缘周围摆动.
TRANS_CUBIC = 7 动画使用三次(至3的幂)函数进行插值.
TRANS_CIRC = 8 动画通过使用平方根的函数进行插值.
TRANS_BOUNCE = 9 通过在结尾处弹跳来插入动画.
TRANS_BACK = 10 动画插补后退.

Node2D节点中,global_position 全局坐标,另外还有global_scale 全局缩放,global_transform 全局变换。

linear_interpolate是对于向量的计算,返回这个向量和b之间线性插值的结果,其数量为t.t在0.0-1.0的范围内,表示内插量。

get_global_mouse_position() 返回鼠标的全局坐标。

相关文章