9
2012
Enemy Visibility Cone (idea)
Testing one visibility cone idea for enemies. (later will check what other solutions there are..)
Code:
- If enemy stays inside blue trigger area (attached to player) then
- If enemy view angle is towards the player (within view angle range) then
- Do Linecast(s) to player bounding circle/sphere then
- if LineCast doesn’t hit obstacles, we can see the player
- Do Linecast(s) to player bounding circle/sphere then
- If enemy view angle is towards the player (within view angle range) then
Now just need to try that in Unity..
Version 1.0 notes
– Vector3.Dot used to check if player is front of the enemy (theres ready code in docs)
– Physics.LineCast for checking if there are any walls between player-enemy
– Quaternion.LookRotation & Quaternion.Slerp for rotating & turning towards the player
– Vector3.MoveTowards for moving towards player
Webplayer:
http://unitycoder.com/upload/demos/EnemyVisibilityCone1/ (v1.0)
Download source:
enemyVision1.unityPackage
Related Posts
11 Comments + Add Comment
Leave a comment
Recent posts
- [GreaseMonkey] Unity Forum Fixer
- UnityHub: Make Hub application background Translucent
- Customize SpriteShapeRenderer quality (but has issues)
- Editor tool: Copy selected gameobject’s names into clipboard as rows (for Excel)
- Editor tool: Replace string in selected gameobject’s names
- UnityHub: Enable built-in Login Dialog (no more browser login/logout issues!)
- Use TikTok-TTS in Unity (with WebRequest)
- Create Scene Thumbnail Image using OnSceneSaved & OnPreviewGUI
- webgl+javascript TTS
- Using Moonsharp (LUA) + Unity Webgl
- Using 3D gameobject prefabs with Unity Tilemap + NavMesh Surface
- Custom Unity Hub Project Template Preview Image/Video (using HTML+CSS in package description)
Recent Comments
- Vector3 maths for dummies! on
- UnityHub: Make Hub application background Translucent on
- UnityHub: Make Hub application background Translucent on
- Install Android SDK+JDK+NDK for Unity (without AndroidStudio or Unity Hub) on
- Install Android SDK+JDK+NDK for Unity (without AndroidStudio or Unity Hub) on
- [Asset Store] Point Cloud Viewer & Tools on
- [Asset Store] Point Cloud Viewer & Tools on
- ffmpeg stream raw video into Unity Texture2D on
Nice! Maybe you can enable the cone view only when the enemy is inside the blue area.
Please post your results!
Added webplayer 1.0: Enemies rotate & move slowly towards the player, when player is visible in front of them. (doing just 1 linecast right now for checking if any walls are in between enemy to player)
I am working on something very similar to this in a project I am working on, always interesting to see someones take on it.
I have the enemies once alert move towards the player, if the linecast is broken, the enemy will move towards the last place it saw the player without a broken linecast. once there it will start a random searching path for the player.
my next step was to add in the outside linecasts so the enemy will have move information about the player to script AI off.
I will keep an eye on what you are doing.
Had similar thoughts,
– LastSeen spot is known, so enemy can move there
– If enemy can see the player, he could alert the nearby enemies to turn that way (for example enable triggerbox around the enemy or Physics.OverlapSphere / SendMessage..)
– Maybe could try some prediction (if the player runs towards north and, if the enemies get alerted far away also, they could have a temporary target on playerpos+20m north..), so they would be waiting him there.
i fell down the platform :'(
reminds me of the plain code i use for my ships, i don’t reduce enemy sight to a cone yet, its 360°, maybe i should add it, would be more interesting if you can sneak up on ships (how would that even work in reality). I used coroutines to minimize the load when i have +60 ships flying around, they only get triggered every 0.5-2s depending if its raycastchecks or movement that has to be done.
It’l be good if it’s possible to do that for every vertex of player character.
Yeah..that could work especially on 3D (and if there is no hundreds of vertices), then enemy could see your leg under some object etc.
This was really nice and I can see it used in several of projects. Are you planing to share the code?
Joakim
Webplayer source added.
Great idea!
I love the phrasing, I can’t image that rea game devs do it any other way.
Mars
I love you, I’ve been searching a way to do that with a Camera and field of view, but it was so easy. I put all these together and they work perfect. Thank you !