Creating an enemy when a random value = 1
I have been working on a basic wandering enemy AI. I have set up the variables I need, but the way it is deciding whether or not it should spawn returns the errors "Invalid token '=' in class, struct, or interface member declaration", "Invalid token '(' in class, struct, or interface member declaration", and "Invalid token ')' in class, struct, or interface member declaration" on line 18 of my code.
Here is the code(C#)
using UnityEngine;
using System.Collections;
public class OverworldWalk : MonoBehaviour {
public float ChanceToSpawn;
public float WalkSpeed;
public float EncounterRange;
public float DespawnRange;
public float SpawnRange;
public Animation WalkAnimation;
public Animation IdleAnimation;
public GameObject Player;
public GameObject Enemy;
public float X;
public float Y;
public float Z;
public int Spawn;}
public class CreateEnemy : MonoBehaviour {
Spawn = Random.Range(1f, ChanceToSpawn);
void Start() {
if (Spawn = 1)
Instantiate (Enemy);
}}
I'm sorry if my code is hard to understand, or is this is a very simple answer, but how do I tell unity that lines 18-22
public class CreateEnemy : MonoBehaviour { ////// line 17
Spawn = Random.Range(1f, ChanceToSpawn); ////// line 18
void Start() { ////// line 19
if (Spawn = 1) ////// line 20
Instantiate (Enemy); ////// line 21
}} ////// line 22
How do I tell unity lines 18-22 are not a class, structure or interface member?
Thanks in advance, sorry for disorganized code.
Answer by Jessespike · Jul 06, 2016 at 08:41 PM
A single equal sign is an assignment, double equal sign is a comparison.
if (Spawn = 1)
should be if (Spawn == 1)
Secondly, there should not be 2 MonoBehaviours in the same script. They should be in their own respectable seperate scripts. You'll need to redesign a bit, because how is CreateEnemy supposed to have access to Spawn, when Spawn is declared in OverworldWalk?
Also, Spawn = Random.Range(1f, ChanceToSpawn);
needs to be inside of a function.
How would I go about putting that inside of a function? Sorry, I assume this is very basic, but I am somewhat new to C#.
cut and paste it?
void Start () {
Spawn = Random.Range(1, ChanceToSpawn);
if (Spawn == 1)
Instantiate (Enemy);
}
Also change 1f to 1, because Spawn is not a float, it's an int. And change ChanceToSpawn to an int.
Thank you! I was able to fix most of the script except that one part.
Answer by fafase · Jul 06, 2016 at 08:39 PM
if (Spawn = 1)
You have an assignment in a condition:
if(Spawn == 1)
you need two of them.
Your answer
Follow this Question
Related Questions
How do I make AI objects not walk on top of each other? 5 Answers
(SOLVED) Need help with Script that is supposed to get components of an AI and change them 1 Answer
I need help with AI,Force not working 0 Answers
How do I get random answers? 2 Answers
HELP!! How to make my Mixamo Character sit on a CHAIR?? A* Pathfinding + Mixamo Animation 0 Answers