实现抽奖功能

UI拆解

分为装饰性以及功能性UI两种,都是比较容易绘制的

直接截图并对其进行临摹,这里就不展示具体的绘制过程了,下面主要讲解功能性代码的实现

功能实现

大概流程如下:

  • 转盘包含8个内容,这种奖励都是固定的,可以直接固定

  • 点击开始抽奖按钮

  • 播放转盘转动动画

  • 使用一个随机函数确定最终奖励位置

  • 获得奖励并且提示

extends Node2D

@onready var board: AnimatedSprite2D = $board

var curr_frame = -1

func _ready() -> void:
	pass

func _process(delta: float) -> void:
	if curr_frame == -1 or not board.is_playing():
		return
	
	if board.frame == curr_frame:
		print("抽奖完成")
		curr_frame = -1
		board.pause()


func _on_draw_pressed() -> void:
	board.frame = 0
	board.play("default")
	await get_tree().create_timer(1.5).timeout
	curr_frame = randi_range(0, 7)