【问题标题】:Overlapping collision area fails to fire touch event重叠碰撞区域无法触发触摸事件
【发布时间】:2019-07-25 05:17:54
【问题描述】:

在我使用 Godot 3.0 的 Android 项目中,我的游戏有一个“虚拟”左键和右键。当用户按下/触摸左或右按钮时,它将控制主角向左或向右移动。这是右键的脚本。

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 还是其他一些问题。请帮忙。欢迎任何建议。谢谢!

【问题讨论】:

    标签: android game-engine godot gdscript


    【解决方案1】:

    我花了整整两天时间才弄清楚。我不知道为什么,但以下配置解决了这些问题。

    在 Enemy 下的 colorRect 中,有一个“鼠标”部分。最初它被设置为“停止”。将其更改为“忽略”即可解决此问题。

    【讨论】:

    • 我已经尝试解决这个问题一个多小时了!谢谢你的回答
    • @sliks 非常感谢您解决/回答这个问题,遇到了完全相同的问题。
    猜你喜欢
    • 2021-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多