Warum bleibt der Char beim falschen Part stehen?

2 Antworten

Bei Touched handelt es sich um ein Event, kein Property. Du kannst darüber also keinen Zustand abfragen. Stattdessen musst du einen Event Handler daran binden, welcher bestimmt, was passieren soll, wenn es getriggert wird.

local function stop()
  HM.WalkSpeed = 0
end

if ICH and ICH:IsA("BasePart") then
  ICH.Touched:Connect(function(hit) -- Event handler
    stop()
  end)
end

while true do
  for i, v in game.Workspace.Path:GetChildren() do
    HM:MoveTo(v.Position)
    HM.MoveToFinished:Wait()
  end
end

Diese Logik fokussiert sich aber noch nicht einzig auf eine Kollision zwischen beiden Spielobjekten, falls du das beabsichtigt hast. Das Touched-Event wird immer gefeuert, wenn ICH mit irgendeinem BasePart (außer sich selbst) kollidiert.

Sollte HM also nur stehenbleiben, wenn er mit ICH kollidiert, bräuchtest du im Event Handler noch eine Abfrage, ob hit (BasePart) auch HM entspricht.

Ungefähr so:

local character = hit:FindFirstAncestorOfClass("Model")

if character == CH then
  local touchedHumanoid = character:FindFirstChildOfClass("Humanoid")

  if touchedHumanoid == HM then
    stop()
  end
end

Mit dem TouchEnded-Event wiederum kannst du dafür sorgen, dass HM seine Patrouille später wieder aufnimmt.


iaobfaud3214234 
Beitragsersteller
 01.05.2025, 14:15

Dankeschön hab ich kurz bevor ich diese Nachricht gelesen hab mit gekriegt deswegen hab ich es schon gemacht trotzdem danke.

Es ist möglich durch eine Funktion alle berührenden Teile von einem Teil zu sehen. Habe leider vergessenw ie es hieß.