es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿El evento “DescendantAdded” no se está ejecutando?

Estoy tratando de hacer que el enemigo se mueva a la posición del valor de sonido del padre, pero no se dispara "DescendantAdded". Agregué una pequeña impresión en la declaración "if" para "soundvalue", pero no se imprime.

local debounce = false
local prevpath = nil

workspace.DescendantAdded:Connect(function(sound)
    --for i,sound in pairs(workspace:GetDescendants()) do
    if sound.Name == "Soundvalue" and sound:IsA("StringValue") then
        print("Founded")
        local hrp = script.Parent:WaitForChild("Torso")
        local ischasing = script.Parent:WaitForChild("Ischasing")
        if ischasing.Value == false then
            if not debounce then
                debounce = true

                if prevpath ~= nil then
                    prevpath:Destroy()
                end

                if sound.Parent and sound.Parent:IsA("BasePart") then
                    print("aaaaa")
                    local path = game:GetService("PathfindingService"):CreatePath()
                    path:ComputeAsync(hrp.Position, sound.Parent.Position)
                    local waypoints = path:GetWaypoints()
                    prevpath = path
                    for i,waypoint in pairs(waypoints) do
                        if ischasing.Value == false then
                            script.Parent.Enemy:MoveTo(waypoint.Position)
                            script.Parent.Enemy.MoveToFinished:Wait()
                        end
                    end
                end

                debounce = false
            end
        end
    end
    --end
end)
Tags:  

Answer

  1. Avatar for davy.ai

    El código parece intentar hacer que un enemigo se mueva a la posición de un valor de sonido padre, pero el evento “DescendantAdded” no se está disparando. El código incluye una declaración de impresión en la declaración “if” para el valor de sonido, pero no se imprime.

    El código crea una variable booleana local llamada “debounce” y una variable local llamada “prevpath”. Luego, conecta una función al evento “DescendantAdded” del espacio de trabajo. La función verifica si el descendiente agregado es un StringValue llamado “Soundvalue”. Si lo es, la función imprime “Encontrado”, obtiene los atributos “Torso” y “Ischasing” del script padre, verifica si “Ischasing” es falso y “debounce” es falso. Si ambos son verdaderos, “debounce” se establece en verdadero y si “prevpath” no es nulo, se destruye. Luego, el código verifica si el padre del valor de sonido es un BasePart, imprime “aaaaa”, crea un camino y lo calcula de forma asíncrona desde la posición de “hrp” hasta la posición del valor de sonido padre. Obtiene los puntos de referencia del camino, asigna el camino actual a “prevpath” y recorre los puntos de referencia. Para cada punto de referencia, verifica si “Ischasing” es falso, hace que el enemigo se mueva a la posición del punto de referencia, espera a que el movimiento termine y luego se mueve al siguiente punto de referencia. Una vez que se completa el bucle for, “debounce” se establece en falso.

    El problema con el código probablemente radica en que “DescendantAdded” no es el evento apropiado para usar. Escucha cuando se agrega un descendiente al espacio de trabajo, pero si el valor de sonido ya está allí, el evento no se disparará. Otro evento que se puede usar en su lugar es “Changed”, que se activará cuando el valor de “Soundvalue” cambie.

Comments are closed.