У меня есть «виртуальная» левая кнопка и правая кнопка для моей игры в моем проекте Android с использованием Godot 3.0.Когда пользователь нажимает / касается левой или правой кнопки, он будет управлять основным персонажем, чтобы двигаться влево или вправо.Вот сценарий для правой кнопки.
func _on_RightButton_input_event(viewport, event, shape_idx):
if (event is InputEventScreenTouch):
if (event.pressed):
emit_signal("right_btn_pressed", event)
else:
emit_signal("right_btn_released", event)
И это структура узла правой кнопки:
RightButton (Area2D)
+CollisionShape2D (a circle)
+Sprite (a right arrow image)
У меня также случайно появляется какой-то враг на сцене.Они всегда двигаются влево и вот сценарий для врагов
extends Node2D
enum MOVEMENT_TYPES{normal}
var movementType = MOVEMENT_TYPES.normal
export var motion = Vector2()
const UP = Vector2(0, -1)
var dyingBounce = true
var counter = 1
var enemyDie = false
func _physics_process(delta):
if(enemyDie):
if dyingBounce == true:
motion.y = -100
dyingBounce = false
motion.y +=10
if(movementType == MOVEMENT_TYPES.normal):
motion = $Body.move_and_slide(motion, UP)
else:
var xf = Transform2D()
xf[2]= motion * (delta * counter)
counter = counter - 2
$Body.transform = xf
func hit_by_main_character():
print("hit")
$Body.get_node("CollisionShape2D").disabled = true
enemyDie = true
pass # replace with function body
func _on_VisibilityNotifier2D_screen_exited():
queue_free()
А это узел для врага:
Enemy
+ Body
+ VisibilityNotifier2D
+ ColorRect (just a rectangle as a place holder)
+ CollisionShape2D (also a rectangle)
Большую часть времени кнопка работает.Однако, когда враг движется за правой кнопкой, правая кнопка не будет издавать сигнал input_event.(Я подключаю сигнал input_event к _on_RightButton_input_event.) Я не уверен, что это из-за перекрывающегося CollisionShape2D или некоторых других проблем.Пожалуйста помоги.Любые предложения приветствуются.Спасибо!