hi all,
I am having a mind melter trying to set up a early crafting mechanism, I want to press a button and have an object appear for the player to use a raycast to to place on the ground. this is all fine and works and when the player clicks the mouse it places a new object on the ground, however when i turn on the crafting system with (c key for now) the template object spawns over and over.
Code
public bool craftingOn = false;
public Transform spawner;
public Transform myObjects;
public Transform myRealObjects;
public float rayDistance = 100f;
public string tagCheck = "Ground";
public bool checkAllTags = false;
//need to link this to inventory so that items only go into arrays that are in the inventory.
void Update ()
{
craftOnOff(myObjects[0],myRealObjects[0]);
}
void CraftItem(Transform unCrafted, Transform crafted)// this works pefect just need to adapt items that put into function
{
bool foundHit = false;
RaycastHit hit = new RaycastHit();
foundHit = Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition),out hit,rayDistance);
if(foundHit && !checkAllTags && hit.transform.tag != tagCheck)
foundHit = false;
if(foundHit)
{
unCrafted.position = hit.point;//use a loop here just test
if(Input.GetButtonDown("Fire1"))
{
Transform clone;
clone = Instantiate(crafted,hit.point,Quaternion.identity)as Transform;
}
}
}
void craftOnOff(Transform item, Transform realItem)//for now c turns on off crafting ray for player.
{
if(Input.GetKeyDown(KeyCode.C))//need set this to turn on from a UI Button not key
{
craftingOn = !craftingOn;// turning on and off the crafting needs to be set up in controls properly
}
if(craftingOn)
{
Transform cloneItem;
cloneItem = Instantiate(item,spawner.transform.position,spawner.transform.rotation)as Transform;
CraftItem(cloneItem,realItem);
}
if(!craftingOn)
{
//get rid of object if one is instantiated and player changes mind.
// and add resources back to inventory
}
}