I just started learning about region 3, and I want to make a region that appears in front of the player when he presses a key. The problem is that the region3 always get in the same direction no matter how I move the player. can someone help me settle it please??
Here is the script,
local c = plr.Character local Reg = Region3.new(c.HumanoidRootPart.Position-Vector3.new(0,2.5,2.5),c.HumanoidRootPart.Position +Vector3.new(20,2.5,2.5)) local Part = Instance.new("Part",workspace) Part.CFrame = Reg.CFrame Part.Size = Reg.Size Part.Anchored = true Part.CanCollide = false Part.Transparency = 0.8 local Rtable = workspace:FindPartsInRegion3(Reg,c) for i,v in pairs(Rtable) do print(v) if v.Parent:findFirstChild('Humanoid') and v.Parent.ClassName == 'Model' and v.Parent:findFirstChild('AoEDebounce')== nil then local Deb = Instance.new('BoolValue',v.Parent) local BV = Instance.new("BodyVelocity",v) BV.MaxForce = Vector3.new(25000,25000,25000) BV.Velocity = c.HumanoidRootPart.CFrame.LookVector * 50 game.Debris:AddItem(BV,0.5) Deb.Name = 'AoEDebounce' game.Debris:AddItem(Deb,1) v.Parent.Humanoid:TakeDamage(30) end end
This is because you gave constant vectors (vectors that always stay the same) to specify a direction in your Region3 arguments. You must base it off vectors that will be based off the player's direction, namely the unit vectors which you have used one (
By using CFrame, it will be as simple as changing your Reg variable to this although I will add a CFrame variable and number variable to make the Reg variable simpler and shorter to read:
local cf = c.HumanoidRootPart.CFrame local Z_multiplier = c.HumanoidRootPart.Size.Z/2 -- becomes negative later because -Z is forward, by multiplying position Z by this, you will reach the front surface of the object local Reg = Region3.new(cf * CFrame.new(0,2.5, -(Z_multiplier + 2.5) ), cf * CFrame.new(20,2.5, Z_multiplier + -(Z_multiplier + 2.5) ))
You might need to adjust the CFrame coordinates for X or Y if the result is still undesirable.
If only it was about CFrame, but, in region3 you can only use Position / Vector3 :( . I tried your idea but it still doesn't work. It say: invalid argument #1 to 'new' (Vector3 expected, got CFrame)
Try using @ArtFoundation's answer and use
CFrame.Position wherever you are currently using