
Unity Game Development Blueprints
By :

Now, it's really cool that we have a player, but it'll get really boring if all we can do is move around and shoot some lasers in the dark. Next, we'll introduce some simple enemies that will move toward the player that we'll be able to shoot later. Perform the following steps:
Assets
folder; move the enemy.png
file into our Sprites
folder.MoveTowardsPlayer
. Go to MonoDevelop
and use the following code:using UnityEngine; using System.Collections; public class MoveTowardsPlayer : MonoBehaviour { private Transform player; public float speed = 2.0f; // Use this for initialization void Start () { player = GameObject.Find("playerShip").transform; } // Update is called once per frame void Update () { Vector3 delta = player.position - transform.position; delta.Normalize(); float moveSpeed = speed * Time.deltaTime; transform.position = transform.position + (delta * moveSpeed); } }
In the beginning of the game, I find the player ship and get his transform component. Then, in every frame of the project, we move the enemy from where it currently is to the direction where the player is at.
If you ever want to have objects run away from the player, use a negative value for the speed
variable.
.455
, and run the game. Have a look at the following screenshot:Now, you'll see that the enemy will always move toward you! But if we shoot it, nothing happens. Let's fix that as follows.
EnemyBehaviour
. Go to MonoDevelop
, and use the following code:using UnityEngine; // MonoBehaviour public class EnemyBehaviour : MonoBehaviour { // How many times should I be hit before I die public int health = 2; void OnCollisionEnter2D(Collision2D theCollision) { // Uncomment this line to check for collision //Debug.Log("Hit"+ theCollision.gameObject.name); // this line looks for "laser" in the names of // anything collided. if(theCollision.gameObject.name.Contains("laser")) { LaserBehaviour laser = theCollision.gameObject.GetComponent("LaserBehaviour") as LaserBehaviour; health -= laser.damage; Destroy (theCollision.gameObject); } if (health <= 0) { Destroy (this.gameObject); } } }
Now, you will notice that we have commented a line of code calling the function Debug.Log
. This function will print something onto your console, which may help you when debugging your own code in the future.
EnemyBehaviour
behavior to your enemy object. For collision events to register we need to add a Rigidbody 2D component to our enemy by going to Component | Physics 2D | Rigidbody 2D. Change the Gravity Scale to 0 so it will not fall. Have a look at the following screenshot:
OnCollisionEnter2D
is a function that will trigger when two objects with 2D colliders collide. It is important to note collision events are only sent if one of the colliders also has a non-kinematic rigidbody attached (which we just did).
For more info on OnCollisionEnter2D check out http://docs.unity3d.com/ScriptReference/Collider2D.OnCollisionEnter2D.html.
Now, whenever we hit the enemy with our bullets twice, it will die. Nice!
Change the font size
Change margin width
Change background colour