代码之家  ›  专栏  ›  技术社区  ›  Twebs Playz

为什么我的冲突组脚本不起作用

  •  0
  • Twebs Playz  · 技术社区  · 3 年前

    所以我在roblox中制作了一个塔防游戏,我正在努力制作它,这样敌人就不会相互碰撞。我用一个旧的教程制作了脚本,但我找到了碰撞组的新方法,并编辑了这段代码,但我一直收到一个错误,说“碰撞组不是(我的敌人模型)人形根部分的一部分” 这只是我制作的整个模块脚本的一部分,用于生成敌人,使它们不会相互碰撞,但仍然会碰撞

                local newMob = mobExists:Clone()
                newMob.HumanoidRootPart.CFrame = map.StartPoint.CFrame
                newMob.Parent = map.Mob
                
                for i, object in ipairs(newMob:GetDescendants()) do
                    PhysicsService:RegisterCollisionGroup("Mobs")
                    if object:IsA("BasePart") then
                        object:CollisionGroup(object, "Mobs")
                    end
                end
    

    我制作剧本时也希望敌人不再相互碰撞,但我却犯了一个对我来说毫无意义的错误。

    1 回复  |  直到 3 年前
        1
  •  0
  •   Kylaaa    3 年前

    错误告诉你 CollisionGroup 不是对象上的函数。这是一个 property that you set .

    有一个 official tutorial 你可以关注碰撞组,这很有帮助。因此,请遵循以下步骤:

    1. 注册冲突组(尝试执行一次)
    2. 设置碰撞组之间的碰撞属性
    3. 将对象添加到新的碰撞组

    所以试试这样的方法:

    local PhysicsService = game:GetService("PhysicsService")
    local COLLISION_GROUP_MOBS = "Mobs"
    local mobExists -- DEFINE THIS VARIABLE
    local map -- DEFINE THIS VARIABLE TOO
    
    -- Register the new collision group
    PhysicsService:RegisterCollisionGroup(COLLISION_GROUP_MOBS)
    
    -- Disable collisions between objects in the collision group
    PhysicsService:CollisionGroupSetCollidable(COLLISION_GROUP_MOBS, COLLISION_GROUP_MOBS, false)
    
    -- Create a helper function to spawn mobs
    local function spawnMob()
        -- spawn and position the mob
        local newMob = mobExists:Clone()
        newMob:PivotTo(map.StartPoint.CFrame)
        newMob.Parent = map.Mob
        
        -- set every collidable part to the mob collision group
        for _, object in ipairs(newMob:GetDescendants()) do
            if object:IsA("BasePart") then
                object.CollisionGroup = COLLISION_GROUP_MOBS
            end
         end
    
        return newMob
    end
    
    推荐文章