Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by MartinAntonsen · Feb 19, 2012 at 01:15 AM · aizombie

Zombie AI scripts

Hello i found two scripts on the Internet, one finds the closest target and one attacks and follows and stuff but i need to put them together so that the zombie knows what target is closest and use the other script to attack and follow when the tagged object is within distance, Can anybody study the script and try to combine them as i want? Please?

Script 1:

 var target : Transform; //the enemy's target

var moveSpeed = 3; //move speed

var rotationSpeed = 3; //speed of turning

var attackThreshold = 1.5; // distance within which to attack

var chaseThreshold = 10; // distance within which to start chasing

var giveUpThreshold = 20; // distance beyond which AI gives up

var attackRepeatTime = 1; // delay between attacks when within range

private var chasing = false;

public var attackTime : float;

var myTransform : Transform; //current transform data of this enemy

function Awake()

{

 myTransform = transform; //cache transform data for easy access/preformance 

 }





function Start()

{

  if (target == null && GameObject.FindWithTag("Player"))

    target = GameObject.FindWithTag("Player").transform;

}

function Update () {

 // check distance to target every frame:

 var distance = (target.position - myTransform.position).magnitude;



 if (chasing) {



     //rotate to look at the player

     myTransform.rotation = Quaternion.Slerp(myTransform.rotation,

     Quaternion.LookRotation(target.position - myTransform.position), rotationSpeed*Time.deltaTime);



     //move towards the player

     myTransform.position += myTransform.forward * moveSpeed * Time.deltaTime;



    animation.Play("run");



     // give up, if too far away from target:

     if (distance > giveUpThreshold) {

         chasing = false;

     }



     // attack, if close enough, and if time is OK:

     if (distance < attackThreshold && Time.time > attackRepeatTime) {

           animation.Play("attack");

                 target.SendMessage("ApplyDamage",10);

         // Attack! (call whatever attack function you like here)

         }

     if (distance < attackThreshold) {

     moveSpeed=0;

     //stop when close enough

 }



         attackTime = Time.time+ attackRepeatTime;

     }



   else {

     // not currently chasing.

    animation.Play("idle");

     // start chasing if target comes close enough

     if (distance < chaseThreshold) {

         chasing = true;

     }

 }

}

function OnTriggerEnter (other: Collider) {

if (other.gameObject.CompareTag("Bullet")){

chaseThreshold=100000000;

}

}

Script 2:

 // the tag to search for (set this value in the inspector)

var searchTag = "Respawn";

// the frequency with which to re-scane for new nearest target in seconds // (set in inspector) var scanFrequency = 1.0;

// the current target private var target : Transform;

function Start() { // set up repeating scan for new targets: InvokeRepeating("ScanForTarget", 0, scanFrequency ); }

function Update() { // we rotate to look at the target every frame (if there is one) if (target != null) { transform.LookAt(target); } }

function ScanForTarget() { // this should be called less often, because it could be an expensive // process if there are lots of objects to check against target = GetNearestTaggedObject();

}

function GetNearestTaggedObject() : Transform { // and finally the actual process for finding the nearest object:

 var nearestDistanceSqr = Mathf.Infinity;
 var taggedGameObjects = GameObject.FindGameObjectsWithTag(searchTag); 
 var nearestObj : Transform = null;

 // loop through each tagged object, remembering nearest one found
 for (var obj : GameObject in taggedGameObjects) {

     var objectPos = obj.transform.position;
     var distanceSqr = (objectPos - transform.position).sqrMagnitude;

     if (distanceSqr < nearestDistanceSqr) {
         nearestObj = obj.transform;
         nearestDistanceSqr = distanceSqr;
     }
 }

 return nearestObj;

}

Comment
Add comment · Show 2
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image Grady · Feb 19, 2012 at 03:08 AM 1
Share

first of all, please properly format the code, select it all, and then hit the little code button, this will format it easier so we can read it and help!

avatar image jazza · Aug 10, 2012 at 02:10 PM 0
Share

why do i always seem to get a parsing error on line (1,12) when i try to enable script 1? what's going on... (Assets/Scripts/Zombie AI.cs(1,12): error CS8025: Parsing error)

2 Replies

· Add your reply
  • Sort: 
avatar image
0

Answer by darkforce1980 · Apr 09, 2012 at 10:37 AM

I think jeg can do somthing better for you:

this script below find the target.. attakt it .... and kill it ... if it cant find og lost a target....it go to den nearste wayponit...and start look for it with this setup there is 5 waypoint and one target

var wayPoint1 : Transform; var wayPoint2 : Transform; var wayPoint3 : Transform; var wayPoint4 : Transform; var wayPoint5 : Transform; var victim : Transform; var speed : float; var lastWaypoint=0;
var rotationSpeed : float;

var damage : int; var dice : int = 1; var baseDamage : int = 1;

private var myTransform : Transform;

//set monster states to a number for easy checking easy to add more states private var idle : int = 0; private var returnToSpawn : int = 1; private var chasePlayer : int = 2; private var attackPlayer : int = 3; private var dead :int = 4;

private var status = returnToSpawn; private var monsterStats : String; private var seconds : int; private var savedTime : int;

function Awake() { myTransform = transform;

} function OnGUI() { GUI.Box(Rect(220,10,200,100), monsterStats); }

function Update() { var target : Transform; var dist1 = Vector3.Distance(wayPoint1.position, myTransform.position); var dist2 = Vector3.Distance(wayPoint2.position, myTransform.position); var dist3 = Vector3.Distance(wayPoint3.position, myTransform.position); var dist4 = Vector3.Distance(wayPoint4.position, myTransform.position); var dist5 = Vector3.Distance(wayPoint5.position, myTransform.position); var aggro = Vector3.Distance(victim.position, myTransform.position); var statusString :String; seconds = Time.time;

if(aggro > 20) status = returnToSpawn; else if(aggro == 20 || aggro < 20 && aggro > 2) status = chasePlayer; else if(aggro < 2) status = attackPlayer;
/ if (dist > 50 ||(aggro > 20 && dist > 3)) status = returnToSpawn; else if(dist <30 && (aggro < 20 && aggro > 2)) status = chasePlayer; else if(aggro < 2) status = attackPlayer; / switch(status) { case returnToSpawn:

     //Find næsten waypoint hvis du er mere end 4 meter fra det og du har miste spiller eller aldrig har set ham
     if(dist1 < dist2 && dist1 < dist3 && dist1 < dist4 && dist1 < dist5 && dist1 > 4 && lastWaypoint == 0){
     target = wayPoint1;
     lastWaypoint = 1;
     myTransform.rotation = Quaternion.Slerp(myTransform.rotation,Quaternion.LookRotation(target.position - myTransform.position),rotationSpeed * Time.deltaTime);
     myTransform.position += transform.forward * (speed/2) * Time.deltaTime;
     statusString =  "wayPoint1";
     Debug.Log("miste spiller gå til ");
     break;
     }
     
     if(dist2 < dist3 && dist2 < dist4 && dist2 < dist5 && dist2 < dist1 && dist2 > 4 && lastWaypoint == 0){
     target = wayPoint2;
     lastWaypoint = 2;
     myTransform.rotation = Quaternion.Slerp(myTransform.rotation,Quaternion.LookRotation(target.position - myTransform.position),rotationSpeed * Time.deltaTime);
     myTransform.position += transform.forward * (speed/2) * Time.deltaTime;
     statusString =  "wayPoint1";
     Debug.Log("1");
     break;
     }
                     
     else if(dist3 < dist4 && dist3 < dist5 && dist3 < dist1 && dist3 < dist2 && dist3 > 4 && lastWaypoint == 0){
     target = wayPoint3;
     lastWaypoint = 3;
     myTransform.rotation = Quaternion.Slerp(myTransform.rotation,Quaternion.LookRotation(target.position - myTransform.position),rotationSpeed * Time.deltaTime);
     myTransform.position += transform.forward * (speed/2) * Time.deltaTime;
     statusString =  "wayPoint3";
     Debug.Log("1");
     break;
     }
         
     
     else if(dist4 < dist5 && dist4 < dist1 && dist4 < dist2 && dist4 < dist3 && dist4 > 4 && lastWaypoint == 0){
     target = wayPoint4;
     lastWaypoint = 4;
     myTransform.rotation = Quaternion.Slerp(myTransform.rotation,Quaternion.LookRotation(target.position - myTransform.position),rotationSpeed * Time.deltaTime);
     myTransform.position += transform.forward * (speed/2) * Time.deltaTime;
     statusString =  "wayPoint4";
     Debug.Log("1");
     break;
     }
     
     else if(dist5 < dist1 && dist5 < dist2 && dist5 < dist3 && dist5 < dist4 && dist5 > 4 && lastWaypoint == 0){
     target = wayPoint5;
     lastWaypoint = 5;
     myTransform.rotation = Quaternion.Slerp(myTransform.rotation,Quaternion.LookRotation(target.position - myTransform.position),rotationSpeed * Time.deltaTime);
     myTransform.position += transform.forward * (speed/2) * Time.deltaTime;
     statusString =  "wayPoint5";
     Debug.Log("1");
     break;
     }    
     
     //Find næsten waypoint hvis du er mindre eller ligmed 4 meter fra det og du har miste spiller eller aldrig har set ham
     
     if(dist1 < dist2 && dist1 < dist3 && dist1 < dist4 && dist1 < dist5 && dist1 <= 4 && lastWaypoint == 0){
     target = wayPoint2;
     lastWaypoint = 2;
     myTransform.rotation = Quaternion.Slerp(myTransform.rotation,Quaternion.LookRotation(target.position - myTransform.position),rotationSpeed * Time.deltaTime);
     myTransform.position += transform.forward * (speed/2) * Time.deltaTime;
     statusString =  "wayPoint2";
     Debug.Log("1");
     break;
     }
     
     if(dist2 < dist3 && dist2 < dist4 && dist2 < dist5 && dist2 < dist1 && dist1 <= 4 && lastWaypoint == 0){
     target = wayPoint3;
     lastWaypoint = 3;
     myTransform.rotation = Quaternion.Slerp(myTransform.rotation,Quaternion.LookRotation(target.position - myTransform.position),rotationSpeed * Time.deltaTime);
     myTransform.position += transform.forward * (speed/2) * Time.deltaTime;
     statusString =  "wayPoint1";
     Debug.Log("1");
     break;
     }
                     
     else if(dist3 < dist4 && dist3 < dist5 && dist3 < dist1 && dist3 < dist2 && dist3 <= 4 && lastWaypoint == 0){
     target = wayPoint4;
     lastWaypoint = 4;
     myTransform.rotation = Quaternion.Slerp(myTransform.rotation,Quaternion.LookRotation(target.position - myTransform.position),rotationSpeed * Time.deltaTime);
     myTransform.position += transform.forward * (speed/2) * Time.deltaTime;
     statusString =  "wayPoint4";
     Debug.Log("1");
     break;
     }
         
     
     else if(dist4 < dist5 && dist4 < dist1 && dist4 < dist2 && dist4 < dist3 && dist4 <= 4 && lastWaypoint == 0){
     target = wayPoint5;
     lastWaypoint = 5;
     myTransform.rotation = Quaternion.Slerp(myTransform.rotation,Quaternion.LookRotation(target.position - myTransform.position),rotationSpeed * Time.deltaTime);
     myTransform.position += transform.forward * (speed/2) * Time.deltaTime;
     statusString =  "wayPoint4";
     Debug.Log("1");
     break;
     }
     
     else if(dist5 < dist1 && dist5 < dist2 && dist5 < dist3 && dist5 < dist4 && dist5 <= 4 && lastWaypoint == 0){
     target = wayPoint1;
     lastWaypoint = 1;
     myTransform.rotation = Quaternion.Slerp(myTransform.rotation,Quaternion.LookRotation(target.position - myTransform.position),rotationSpeed * Time.deltaTime);
     myTransform.position += transform.forward * (speed/2) * Time.deltaTime;
     statusString =  "wayPoint1";
     Debug.Log("1");
     break;
     }    
     
     //Gå hen til dit waypoint
     
     if(dist1 < dist2 && dist1 < dist3 && dist1 < dist4 && dist1 < dist5 && dist1 > 4 && lastWaypoint == 1){
     target = wayPoint1;
     lastWaypoint = 1;
     myTransform.rotation = Quaternion.Slerp(myTransform.rotation,Quaternion.LookRotation(target.position - myTransform.position),rotationSpeed * Time.deltaTime);
     myTransform.position += transform.forward * (speed/2) * Time.deltaTime;
     statusString =  "wayPoint1";
     Debug.Log("Gå til waypoint 1");
     break;
     }
     
     if(dist2 < dist3 && dist2 < dist4 && dist2 < dist5 && dist2 < dist1 && dist2 > 4 && lastWaypoint == 2){
     target = wayPoint2;
     lastWaypoint = 2;
     myTransform.rotation = Quaternion.Slerp(myTransform.rotation,Quaternion.LookRotation(target.position - myTransform.position),rotationSpeed * Time.deltaTime);
     myTransform.position += transform.forward * (speed/2) * Time.deltaTime;
     statusString =  "wayPoint1";
     Debug.Log("1");
     break;
     }
                     
     else if(dist3 < dist4 && dist3 < dist5 && dist3 < dist1 && dist3 < dist2 && dist3 > 4 && lastWaypoint == 3){
     target = wayPoint3;
     lastWaypoint = 3;
     myTransform.rotation = Quaternion.Slerp(myTransform.rotation,Quaternion.LookRotation(target.position - myTransform.position),rotationSpeed * Time.deltaTime);
     myTransform.position += transform.forward * (speed/2) * Time.deltaTime;
     statusString =  "wayPoint3";
     Debug.Log("1");
     break;
     }
         
     
     else if(dist4 < dist5 && dist4 < dist1 && dist4 < dist2 && dist4 < dist3 && dist4 > 4 && lastWaypoint == 4){
     target = wayPoint4;
     lastWaypoint = 4;
     myTransform.rotation = Quaternion.Slerp(myTransform.rotation,Quaternion.LookRotation(target.position - myTransform.position),rotationSpeed * Time.deltaTime);
     myTransform.position += transform.forward * (speed/2) * Time.deltaTime;
     statusString =  "wayPoint4";
     Debug.Log("1");
     break;
     }
     
     else if(dist5 < dist1 && dist5 < dist2 && dist5 < dist3 && dist5 < dist4 && dist5 > 4 && lastWaypoint == 5){
     target = wayPoint5;
     lastWaypoint = 5;
     myTransform.rotation = Quaternion.Slerp(myTransform.rotation,Quaternion.LookRotation(target.position - myTransform.position),rotationSpeed * Time.deltaTime);
     myTransform.position += transform.forward * (speed/2) * Time.deltaTime;
     statusString =  "wayPoint5";
     Debug.Log("1");
     break;
     }
     
     //Gå hen til næste  til næste waypoint
     
     if(dist1 < dist2 && dist1 < dist3 && dist1 < dist4 && dist1 < dist5 && dist1 <= 4 && lastWaypoint == 1){
     target = wayPoint2;
     lastWaypoint = 2;
     myTransform.rotation = Quaternion.Slerp(myTransform.rotation,Quaternion.LookRotation(target.position - myTransform.position),rotationSpeed * Time.deltaTime);
     myTransform.position += transform.forward * (speed/2) * Time.deltaTime;
     statusString =  "wayPoint2";
     Debug.Log("gå til waypoint 2");
     break;
     }
     
     if(dist2 < dist3 && dist2 < dist4 && dist2 < dist5 && dist2 < dist1 && dist2 <= 4  && lastWaypoint == 2){
     target = wayPoint3;
     lastWaypoint = 3;
     myTransform.rotation = Quaternion.Slerp(myTransform.rotation,Quaternion.LookRotation(target.position - myTransform.position),rotationSpeed * Time.deltaTime);
     myTransform.position += transform.forward * (speed/2) * Time.deltaTime;
     statusString =  "wayPoint3";
     Debug.Log("1");
     break;
     }
                     
     else if(dist3 < dist4 && dist3 < dist5 && dist3 < dist1 && dist3 < dist2 && dist3 <= 4 && lastWaypoint == 3){
     target = wayPoint4;
     lastWaypoint = 4;
     myTransform.rotation = Quaternion.Slerp(myTransform.rotation,Quaternion.LookRotation(target.position - myTransform.position),rotationSpeed * Time.deltaTime);
     myTransform.position += transform.forward * (speed/2) * Time.deltaTime;
     statusString =  "wayPoint4";
     Debug.Log("1");
     break;
     }
         
     
     else if(dist4 < dist5 && dist4 < dist1 && dist4 < dist2 && dist4 < dist3 && dist4 <= 4 && lastWaypoint == 4){
     target = wayPoint5;
     lastWaypoint = 5;
     myTransform.rotation = Quaternion.Slerp(myTransform.rotation,Quaternion.LookRotation(target.position - myTransform.position),rotationSpeed * Time.deltaTime);
     myTransform.position += transform.forward * (speed/2) * Time.deltaTime;
     statusString =  "wayPoint4";
     Debug.Log("1");
     break;
     }
     
     else if(dist5 < dist1 && dist5 < dist2 && dist5 < dist3 && dist5 < dist4 && dist5 <= 4 && lastWaypoint == 5){
     target = wayPoint1;
     lastWaypoint = 1;
     myTransform.rotation = Quaternion.Slerp(myTransform.rotation,Quaternion.LookRotation(target.position - myTransform.position),rotationSpeed * Time.deltaTime);
     myTransform.position += transform.forward * (speed/2) * Time.deltaTime;
     statusString =  "wayPoint1";
     Debug.Log("1");
     break;
     }
     
     //Gå til et waypoint selvom du er tættere på et andet
         
     if(dist1 < dist2 && dist1 < dist3 && dist1 < dist4 && dist1 < dist5 && dist2 > 4 && lastWaypoint == 2){
     target = wayPoint2;
     lastWaypoint = 2;
     myTransform.rotation = Quaternion.Slerp(myTransform.rotation,Quaternion.LookRotation(target.position - myTransform.position),rotationSpeed * Time.deltaTime);
     myTransform.position += transform.forward * (speed/2) * Time.deltaTime;
     statusString =  "wayPoint2";
     Debug.Log("Gå til waypoint 2");
     break;
     }
     
     if(dist2 < dist3 && dist2 < dist4 && dist2 < dist5 && dist2 < dist1 && dist3 > 4 && lastWaypoint == 3){
     target = wayPoint3;
     lastWaypoint = 3;
     myTransform.rotation = Quaternion.Slerp(myTransform.rotation,Quaternion.LookRotation(target.position - myTransform.position),rotationSpeed * Time.deltaTime);
     myTransform.position += transform.forward * (speed/2) * Time.deltaTime;
     statusString =  "wayPoint3";
     Debug.Log("1");
     break;
     }
                     
     else if(dist3 < dist4 && dist3 < dist5 && dist3 < dist1 && dist3 < dist2 && dist4 > 4 && lastWaypoint == 4){
     target = wayPoint4;
     lastWaypoint = 4;
     myTransform.rotation = Quaternion.Slerp(myTransform.rotation,Quaternion.LookRotation(target.position - myTransform.position),rotationSpeed * Time.deltaTime);
     myTransform.position += transform.forward * (speed/2) * Time.deltaTime;
     statusString =  "wayPoint4";
     Debug.Log("1");
     break;
     }
         
     
     else if(dist4 < dist5 && dist4 < dist1 && dist4 < dist2 && dist4 < dist3 && dist5 > 4 && lastWaypoint == 5){
     target = wayPoint5;
     lastWaypoint = 5;
     myTransform.rotation = Quaternion.Slerp(myTransform.rotation,Quaternion.LookRotation(target.position - myTransform.position),rotationSpeed * Time.deltaTime);
     myTransform.position += transform.forward * (speed/2) * Time.deltaTime;
     statusString =  "wayPoint5";
     Debug.Log("1");
     break;
     }
     
     else if(dist5 < dist1 && dist5 < dist2 && dist5 < dist3 && dist5 < dist4 && dist1 > 4 && lastWaypoint == 1){
     target = wayPoint1;
     lastWaypoint = 1;
     myTransform.rotation = Quaternion.Slerp(myTransform.rotation,Quaternion.LookRotation(target.position - myTransform.position),rotationSpeed * Time.deltaTime);
     myTransform.position += transform.forward * (speed/2) * Time.deltaTime;
     statusString =  "wayPoint1";
     Debug.Log("1");
     break;
     }
     
     
 case chasePlayer:
     target = victim;
     lastWaypoint = 0;        
     myTransform.rotation = Quaternion.Slerp(myTransform.rotation,Quaternion.LookRotation(target.position - myTransform.position),rotationSpeed * Time.deltaTime);
     myTransform.position += transform.forward * (speed/1) * Time.deltaTime;
     statusString = "Chase";
     break;
     
 case attackPlayer:
     target = victim;
     lastWaypoint = 0;
     myTransform.rotation = Quaternion.Slerp(myTransform.rotation,Quaternion.LookRotation(target.position - myTransform.position),rotationSpeed *Time.deltaTime);
     statusString = "Attack";
     
     if ( aggro > 1 )
         status = chasePlayer;
         
         if(seconds != savedTime)
         {
         damage =(((Random.Range(1,baseDamage)) * (Random.Range(1, dice)))* seconds);
         Spillerliv.playLives = -damage;
         savedTime = seconds;
         
         }
         
         
         }
         myTransform.eulerAngles = new Vector3(0,myTransform.eulerAngles.y, 0);
         monsterStats = "Spawn Distance: " + dist1 + "\nVictim Distance: " + aggro + "\nStatus: " + statusString + "\nDamage: " + damage + "\nseconds: " + seconds + "\nsavedTime: " + savedTime;
         }

the next scrip you need to put on your player...for him to have life and lost life

static var playLives: int; function OnGUI(){ GUI.Label(Rect(10,30,200,50),"Heath: " + (playLives+100) + "% "); if(playLives <= -100) Destroy(gameObject); }

I am working on finding a way to make this must bettere put it that best I got so far.

I am the teamleader of a gamedevelloping team.... we are all close to newbee in the this ...but we hope to make a good game and start firm to sell og develpoiing more games... we are at this time... 6 in our team now... sinds we are both working on a zombie like game ...why not try to work together and share good info about making AI and maybe other things in the game .... find me on facebook my email is borget@hotmail.com use it to find me..... I do not read my email most of the time soo you facebook

Comment
Add comment · Show 6 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image allenziff · May 08, 2012 at 03:08 PM 0
Share

it doesnt work

avatar image phxvyper · Jan 05, 2013 at 07:01 PM 0
Share

@allenziff you probably didn't implement it correctly. I'd suggest reading it in-depth and try to understand what each part does. Consider and appreciate it's length.

avatar image Windows65 · Aug 08, 2013 at 09:07 PM 0
Share

I worked on the script for a little bit and i got it to work, Thank you so much for posting it. -darkforce1980

avatar image Ipwndthebeast · Jan 29, 2014 at 03:29 PM 0
Share

can you tell me how to identify the idetifiers? like returToSpawn chase player and etc.

avatar image Hyperactive · Feb 02, 2014 at 05:09 PM 0
Share

@Ipwndthebeast just add this at the start of the script

 var returnToSpawn: GameObject;
 var chasePlayer: GameObject;
 var attackPlayer: GameObject;
 var Spillerliv: GameObject;
 

This script is good. Thanks @darkforce1980.

Show more comments
avatar image
0

Answer by YoungDeveloper · Nov 24, 2014 at 10:19 PM

If you want free sample for zombie AI and weapons check OMA kit. Free download is on his page. https://www.youtube.com/watch?v=C32N5lfrBNo&list=UU1IdQuZ390hhqacNIHICUWw

Comment
Add comment · Show 1 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image halofreak202 · Nov 25, 2014 at 12:45 AM 0
Share

thats an FPS kit some of us want to make our own :) its aight to use to learn though

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

13 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Multiple Cars not working 1 Answer

Need help with javascript AI 1 Answer

zombie ai script 1 Answer

ZOMBIE AI SCRIPT 1 Answer

Zombie attack script help 1 Answer


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges