Instantiate in Unity 5 (570796)

Hey guys so I am following this tutorial: http://unity3d.com/learn/tutorials/projects/space-shooter/shooting-shots, and at around the 12 minute mark he finishes the code and moves on. But, my code is not working because of an error in my Instantiate call (I am assuming its something to do with Unity 5) so does anyone have any fixes? I think it has something to do with the Instantiate call on line 23.

Here is my code:

using UnityEngine;
using System.Collections;

[System.Serializable]
public class Boundary {
    public float xMin, xMax, zMin, zMax;
}

public class PlayerController : MonoBehaviour {

    public float speed;
    public float tilt;
    public Boundary boundary;

    public GameObject shot;
    public Transform shotSpawn;
    public float fireRate;
    private float nextFire;

    private void Update() {
        if (Input.GetButton ("Fire1") && Time.time > nextFire) {
            nextFire = Time.time + fireRate;
            Instantiate(shot, shotSpawn.position, shotSpawn.position);
        }
    }

    private void FixedUpdate() {
        float moveHorizontal = Input.GetAxis ("Horizontal");
        float moveVertical = Input.GetAxis ("Vertical");

        Vector3 movement = new Vector3 (moveHorizontal, 0.0f, moveVertical);
        GetComponent<Rigidbody>().velocity = movement * speed;

        GetComponent<Rigidbody> ().position = new Vector3 (
            Mathf.Clamp(GetComponent<Rigidbody>().position.x, boundary.xMin, boundary.xMax),
            0.0f,
            Mathf.Clamp(GetComponent<Rigidbody>().position.z, boundary.zMin, boundary.zMax)
        );
        GetComponent<Rigidbody> ().rotation = Quaternion.Euler (
            0.0f,
            0.0f,
            GetComponent<Rigidbody>().velocity.x * -tilt
        );
    }
}

There’s no difference with Instantiate in Unity 5. That code won’t work in any version of Unity, since Instantiate requires an object, a position, and a rotation, not two positions.

–Eric

2 Likes

Actually you added a Vector3 position as the rotation parameter for the instantiate method.

Instantiate(shot, shotSpawn.position, shotSpawn.position);

You have to input a Quaternion as rotation such as:

Instantiate(shot, shotSpawn.position, shotSpawn.rotation);
1 Like

They actually made a vague mention to Instantiate’s performance in Unity 5’s release notes:

Also exposed the generic version

I have a question, which may be sorta off topic, but kinda not.

Has Destroy been improved, anyone know? Kinda the opposite of Instantiate so I figured I’d ask

@RiokuTheSlayer check out the release notes. Search for ‘destroy’ and cycle through the finds. There’s a few mentions regarding fixes, I guess that’s also considered an improvement.