- Home /
Question by
Crax · Oct 15, 2014 at 08:17 PM ·
instantiateprefabparent
Setting the parent of a transform which resides in a prefab is disabled to prevent data corruption. I am not using a Preafab.
I checked this code with a friend that has a better knowledge of Unity, but we can't find the problem. Basically, Unity says that i can't parent a prefab, but i'm trying to change the parent of an instanced object, not the prefab.
I Can't understand the error (But i think that it's in the Update method)
using System.Collections; using UnityEngine; using UnityEditor;
public class WeaponsManager:MonoBehaviour, IWeapon{
private usefulStuff crax= new usefulStuff();
private bool canShoot = true;
public float projectileSpeed;
public float bulletTime;
private float t = 0f;
public Rigidbody bullet;
public int maxBullets, maxBulletsPerCharger;
private int actualBullets;
public Animation reloadAnimation;
public Transform bulletSpawn;
public Transform gunPosition;
public GameObject[] Weapons;
private GameObject actualWeapon=null;
// Use this for initialization
/*public Weapon(Mesh wm, Transform bs, Animation ra, int mb, int mbpc, float bt, float ps)
{
weaponModel = wm;
bulletSpawn = bs;
reloadAnimation = ra;
maxBullets = mb;
maxBulletsPerCharger = mbpc;
actualBullets = mbpc;
bulletTime = bt;
projectileSpeed = ps;
}*/
void Awake()
{
if (Weapons.Length == 0)
{
Debug.Log("No weapons loaded");
EditorApplication.isPaused = true;
}
}
void Update()
{
//So i check if there aren't weapons loaded. If there aren't, i load the first Weapon GameObject in the Weapons Array, then i instantiate it.
if (actualWeapon == null)
{
actualWeapon = GameObject.Instantiate(Weapons[0], gunPosition.position, gunPosition.rotation) as GameObject;
actualWeapon.transform.parent = GameManager.instance.player.transform;
}
else // Now if there is a gun loaded, i update its position.
{
}
}
public virtual void Fire()
{
//Check if the charger is full
if(actualBullets>0){
//Check if the player can shoot (REALLY LOL CPTN OBVIOUS STRIKEZ AGAIN )
if(canShoot){
//Logic: Remove a bullet, create it then move it. Easy peasy.
actualBullets--;
Rigidbody nBullet = GameObject.Instantiate(bullet, bulletSpawn.position, Quaternion.identity)as Rigidbody;
nBullet.AddForce (new Vector3(Vector3.forward.x, Vector3.forward.y, projectileSpeed));
//And now the player cant shoot. Cause nobody wants a sniper mitra.
canShoot=false;
}
else
{
//All this stuff is to make a little amount of time pass between two bullets
if(t <=bulletTime)
{
t += Time.deltaTime;
}
else
{
canShoot=true;
t = 0;
}
}
}
else
{
Reload();
}
}
public void Reload () {
canShoot = false;
actualBullets = maxBulletsPerCharger;
reloadAnimation.Play ();
crax.Delay (reloadAnimation.clip.length);
canShoot = true;
}
}
Comment
Your answer
Follow this Question
Related Questions
Parenting GameObjects 1 Answer
Change Parent of Multiple Instantiated Objects 1 Answer
Howto set main.camera as a parent when main.camera itself is a child of a prefab 1 Answer
Instantiating prefab with certain coordinates problem (c#) 0 Answers
Prefab, procedural attachment of child, childCount return 0 1 Answer