浏览代码

Merge pull request #678 from ScorpionInc/master

Added Alpha effect to joystick indicators
Aaron Franke 3 年之前
父节点
当前提交
6b983c0542
共有 1 个文件被更改,包括 22 次插入2 次删除
  1. 22 2
      misc/joypads/joypads.gd

+ 22 - 2
misc/joypads/joypads.gd

@@ -41,6 +41,8 @@ func _process(_delta):
 		axis_value = Input.get_joy_axis(joy_num, axis)
 		axes.get_node("Axis" + str(axis) + "/ProgressBar").set_value(100 * axis_value)
 		axes.get_node("Axis" + str(axis) + "/ProgressBar/Value").set_text(str(axis_value))
+		# Scaled value used for alpha channel using valid range rather than including unusable deadzone values.
+		var scaled_alpha_value = (abs(axis_value) - DEADZONE) / (1.0 - DEADZONE)
 		# Show joypad direction indicators
 		if axis <= JOY_ANALOG_RY:
 			if abs(axis_value) < DEADZONE:
@@ -49,19 +51,37 @@ func _process(_delta):
 			elif axis_value > 0:
 				joypad_axes.get_node(str(axis) + "+").show()
 				joypad_axes.get_node(str(axis) + "-").hide()
+				# Transparent white modulate, non-alpha color channels are not changed here.
+				joypad_axes.get_node(str(axis) + "+").self_modulate.a = scaled_alpha_value
 			else:
 				joypad_axes.get_node(str(axis) + "+").hide()
 				joypad_axes.get_node(str(axis) + "-").show()
+				# Transparent white modulate, non-alpha color channels are not changed here.
+				joypad_axes.get_node(str(axis) + "-").self_modulate.a = scaled_alpha_value
+		elif axis == JOY_ANALOG_L2:
+			if axis_value <= DEADZONE:
+				joypad_buttons.get_child(JOY_ANALOG_L2).hide()
+			else:
+				joypad_buttons.get_child(JOY_ANALOG_L2).show()
+				# Transparent white modulate, non-alpha color channels are not changed here.
+				joypad_buttons.get_child(JOY_ANALOG_L2).self_modulate.a = scaled_alpha_value
+		elif axis == JOY_ANALOG_R2:
+			if axis_value <= DEADZONE:
+				joypad_buttons.get_child(JOY_ANALOG_R2).hide()
+			else:
+				joypad_buttons.get_child(JOY_ANALOG_R2).show()
+				# Transparent white modulate, non-alpha color channels are not changed here.
+				joypad_buttons.get_child(JOY_ANALOG_R2).self_modulate.a = scaled_alpha_value
 
 	# Loop through the buttons and highlight the ones that are pressed.
 	for btn in range(JOY_BUTTON_0, int(min(JOY_BUTTON_MAX, 24))):
 		if Input.is_joy_button_pressed(joy_num, btn):
 			button_grid.get_child(btn).add_color_override("font_color", Color.white)
-			if btn < 17:
+			if btn < 17 and btn != JOY_ANALOG_L2 and btn != JOY_ANALOG_R2:
 				joypad_buttons.get_child(btn).show()
 		else:
 			button_grid.get_child(btn).add_color_override("font_color", Color(0.2, 0.1, 0.3, 1))
-			if btn < 17:
+			if btn < 17 and btn != JOY_ANALOG_L2 and btn != JOY_ANALOG_R2:
 				joypad_buttons.get_child(btn).hide()