Godot Shader特效:UV旋转动画

实现这个效果,用GDScript的话只要一行代码就可以解决;用Shader做的话需要一些线性代数知识,扩展性相对差一些,不过如果像逻辑和表现解耦合或者减少CPU运算的话可以考虑这个实现方式

效果图

Godot Shader特效:UV旋转动画_第1张图片

代码如下
shader_type canvas_item;
render_mode unshaded;
uniform float pivot_x : hint_range(0.01,0.99) = 0.5;
uniform float pivot_y : hint_range(0.01,0.99) = 0.5;
uniform float angular_speed  = 1.0;
void vertex(){
	vec2 pivot = vec2(pivot_x, pivot_y);
    float rot = TIME * angular_speed; 
    UV -= pivot;
    UV *= mat2(vec2(sin(rot), -cos(rot)),
               vec2(cos(rot), sin(rot)));
    UV += pivot;
}

你可能感兴趣的:(Godot笔记,游戏特效笔记,#,Godot,实践)