(摘) Godot实现背景透明(不规则窗口/透明窗体)

声明:内容源自网络,版权归原作者所有。若有侵权请在网页聊天中联系我

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

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

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

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

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

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

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

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

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

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

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

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

Godot简单制作残影效果

Godot ParallaxBackground 视差背景

Godot 使用Light2D实现遮罩效果

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


可以实现类似于桌面宠物,可以拖动且透明。可以进一步扩展一些动作。这是原文,我作了一点扩展。应该有更优雅一点的代码,不过实现为主,有机会再更新吧。

窗口大小我设置为了120*150,基本就是动画大小。

节点在这里无关紧要,我只是添加了一个Sprite

  1. 工程属性中设置

  1. 代码

关键的一句:get_tree().root.set_transparent_background(true)

其它是为了用于拖动等。

extends Node2D

var mouse_no = 0
var mouse = [Vector2(),Vector2()]
var base_location = Vector2()

func _ready():
	get_tree().root.set_transparent_background(true)    # 背景透明
	OS.set_window_always_on_top(true)                   # 窗口放前台
	base_location = OS.window_position                  # 获取窗口位置

func _input(event):
	if event is InputEventKey:                          # ESC退出
		if event.pressed and event.scancode == KEY_ESCAPE:
			get_tree().quit()
	if event is InputEventMouseButton:                  # 获取两次鼠标点击,用于计算移动差
		mouse[mouse_no] = get_global_mouse_position()
		mouse_no += 1
		if mouse_no == 2:
			move()

func move():
	var win_location = Vector2(base_location.x + (mouse[1].x-mouse[0].x), base_location.y + (mouse[1].y-mouse[0].y))
	OS.window_position = win_location
	base_location = win_location
	mouse_no = 0

相关文章