- Home /
Correct way to spawn and move objects
So im creating a game where a player or multiple players will create different type of spells and throw at eachother.
Now since im rather new to unity im very uncertain if i am doing it the wrong way and i want to make sure that i dont get any bad habits.
So i have a player GameObject with the following script attached
public class PlayerCasting : MonoBehaviour {
public GameObject Spell;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
if (Input.GetKeyDown (KeyCode.C)) {
GameObject newSpell = (GameObject)Instantiate (Spell, transform.position, transform.rotation);
}
}
}
Now the spell prefab has the following script
public class BallScript : MonoBehaviour {
public float speed;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
transform.Translate (Vector3.forward * Time.deltaTime * speed);
}
void OnCollisionEnter(Collision col){
Destroy (this.gameObject);
}
}
Now my questions are.
My idea is that each spell in my game will be created in the following way with a prefab. Later on i will be adding effects and removing the actual ball. So question 1 is, is it correct to create such a game object each time?
Hopefully this game will turn into a multiplayer game can i with the script above inflect dmg and manipulate other game objects properties such as health with the ballScript?
Lastly am i following the best pratice rules of creating items in a world or will i run into performance issues?
I hope you guys can give me some guidance as i really want to master this!
Answer by Digger8048 · Jan 04, 2017 at 11:52 PM
It seems like a good start, some trouble you might have is the spell immediately colliding with the player who cast it, so you might need to set some layers up to prevent that.
If you have your ball script get a reference to the player script it just hit in the OnCollisionEnter() event, you can call a DoDamage() method (or whatever you were planning), on it.