Search the Community
Showing results for tags 'LOS'.
-
Heya, everyone. I was wondering if someone can help me fix this problem i'm having. I am trying to create a turret that targets someone when they come in range of it and shoots them. I got all that working fine, but this turret can shoot through walls. I was wondering if someone had any idea what I need to change on the walls, or the code to enable a Line of Sight factor. This is the script atm i'm using. Script.aimingLocation = "" --entity "Aiming Location" Script.rotSpeed = .1 --float "Rotation Speed" Script.fireRate = .1 --float "Fire rate" Script.fireRateTimer = 0 Script.muzzleFlashLight = "" --entity "Muzzle flash light" Script.muzzleTime = 0.1 --float "MuzzleTimer" Script.muzzleTimer = 0 Script.gunFireSoundPath = "" --path "Fire Sound" Wav file (*wav):wav|Sound" Script.gunFireSoundFile = nil Script.fireRange = 15 --float "Fire range" Script.damage = 5 --float "Damage per bullet" function Script:Start() self.muzzleFlashLight:Hide() if self.gunFireSoundPath ~= "" then self.gunFireSoundFile = Sound:Load(self.gunFireSoundPath) end end function Script:UpdateWorld() --fire rate self.fireRateTimer = self.fireRateTimer + (Time:GetSpeed()/100) self.muzzleTimer = self.muzzleTimer + (Time:GetSpeed()/100) --get positions local turretPos = self.entity:GetPosition() local playerPos = self.aimingLocation:GetPosition(true) --is target in range? if(turretPos:DistanceToPoint(playerPos) <= self.fireRange) then --rotate turret toward target self.entity:Point(self.aimingLocation, 2, Time:GetSpeed() * self.rotSpeed) --allow firing if(self.fireRateTimer > self.fireRate) then local pickInfo = PickInfo() local point2 = Transform:Point(0,0,self.fireRange, self.entity, nil) if (self.entity.world:Pick(turretPos, point2 ,pickInfo, 0, true, Collision.Prop)) then self.aimingLocation:GetParent().script:Hurt(self.damage) end self.muzzleFlashLight:Show() self.muzzleTimer = 0 self.fireRateTimer = 0 self.gunFireSoundFile:Play() end end if(self.muzzleTimer > self.muzzleTime) then self.muzzleFlashLight:Hide() self.muzzleTimer = 0 end end