Untitled

mail@pastecode.io avatarunknown
plain_text
a month ago
3.3 kB
2
Indexable
Never
local e = true
local function ifdead()
	script.Parent.Humanoid.Died:Connect(function() 
		e = false
		workspace.Gravity = 196.2
		script:Destroy()
	end)
end

local function fireLaser()
	local rayOrigin = script.Parent.Head.Position
	local rayDirection = Vector3.new(0, -100, 0)

	-- Build a "RaycastParams" object and cast the ray
	local raycastParams = RaycastParams.new()
	raycastParams.FilterDescendantsInstances = {script.Parent}
	raycastParams.FilterType = Enum.RaycastFilterType.Blacklist
	local raycastResult = workspace:Raycast(rayOrigin, rayDirection, raycastParams)

	if raycastResult then
		local hitPart = raycastResult.Instance
		-- Check if the part resides in a folder, that it's fully visible, and not locked
		if hitPart.Parent == workspace and hitPart.Name == "Sand"then
			local underwater = true

			wait(.2)

			local char = game.Players.LocalPlayer.Character
			local root = char:WaitForChild'HumanoidRootPart'
			local hum = char.Humanoid
			local runservice = game:GetService'RunService'
			local uis = game:GetService'UserInputService'
			local waterline = workspace.Wave:WaitForChild('Plane')
			local bodyforce_name = 'water BodyForce'




			local tweenservice = game:GetService('TweenService')

			local tweenInfo = TweenInfo.new(
				1, -- Time
				Enum.EasingStyle.Linear, -- EasingStyle
				Enum.EasingDirection.Out, -- EasingDirection
				0, -- RepeatCount (when less than zero the tween will loop indefinitely)
				false, -- Reverses (tween will reverse once reaching it's goal)
				0 -- DelayTime
			)
			local velocity_fade = tweenservice:Create(root,tweenInfo,{Velocity = Vector3.new()})

			local time_entered_water = tick()
			local time_left_water = tick()

			runservice.Stepped:Connect(function()

				if root.Position.y < waterline.Position.y - 3.1 then
					if not underwater then --when you first enter the water
						underwater = true
						time_entered_water = tick()

						root.Velocity = root.Velocity * .1

					end

					if tick() - time_left_water > .5 then --prevents weird constant state changing when near surface
						hum:ChangeState("Swimming")
					end

					workspace.Gravity = 0


					hum:SetStateEnabled('Running',false)
					hum:SetStateEnabled('RunningNoPhysics',false)
					hum:SetStateEnabled('Climbing',false)
					hum:SetStateEnabled('GettingUp',false)
					hum:SetStateEnabled('Jumping',false)

					local moving = hum.MoveDirection ~= Vector3.new()
					local trying_to_rise = uis:IsKeyDown(Enum.KeyCode.Space) --consider mobile jump button gui & controller's ButtonA

					if not moving and not trying_to_rise and tick() - time_entered_water > .2 then
						velocity_fade:Play()
					else
						velocity_fade:Cancel()
					end

				else

					if underwater then
						underwater = false
						print("")
						time_left_water = tick()

						workspace.Gravity = 196.2


						hum:SetStateEnabled('Running',true)
						hum:SetStateEnabled('RunningNoPhysics',true)
						hum:SetStateEnabled('Climbing',true)
						hum:SetStateEnabled('GettingUp',true)
						hum:SetStateEnabled('Jumping',true)
					end

				end
			end)

		end
	end
end
while wait(0.1) do
	
	if e == true  then
		fireLaser()	
	end
end