- Home /
Picking up things for your inventory...
Hi everyone... I found this AMAZING (considering it was free) inventory system, and I'm trying to make it so I can select things with the crosshair, as apposed to the mouse. I've tried everything, and I know I'm going to have to use some kind of raycast, but I'm just terrible with that kind of stuff. If someone could help me, here's my script for the item to pick up:
var inventoryIcon:Texture2D;
var canGet=true;
var itemType:String;
var BoneList:Transform[];
var stackable=false;
var maxStack=99;
var stack=1;
var isEquipment=true;
function Awake(){
var Bones=GetComponentsInChildren(Transform);
var newarray=new Array(Bones);
BoneList=newarray.ToBuiltin(Transform);
}
function OnMouseDown(){
var getit=true;
var playersinv=FindObjectOfType(Inventory);
if(canGet){
if(stackable){
var locatedit:Item;
for(var t:Transform in playersinv.Contents){
if(t.name==this.transform.name){
var i:Item=t.GetComponent(Item);
if(i.stack<i.maxStack){
locatedit=i;
}
}
}
if(locatedit!=null){
getit=false;
locatedit.stack+=1;
Destroy(this.gameObject);
}
else{
getit=true;
}
}
if(getit){
playersinv.AddItem(this.transform);
MoveMeToThePlayer(playersinv.transform);
}
}
}
function MoveMeToThePlayer(theplayer:Transform){
canGet=false;
transform.collider.isTrigger=true;
var renderers=GetComponentsInChildren(Renderer);
for(var rend:Renderer in renderers){
rend.enabled=false;
}
if(transform.renderer!=null){
transform.renderer.enabled=false;
}
transform.parent=theplayer;.
transform.localPosition=Vector3.zero;
}
And here's my inventory script:
var Contents:Transform[];
function AddItem(Item:Transform){
var newContents=new Array(Contents);
newContents.Add(Item);
Debug.Log(Item.name+" Has been added to inventroy");
Contents=newContents.ToBuiltin(Transform);
}
function RemoveItem(Item:Transform){
var newContents=new Array(Contents);
var index=0;
var shouldend=false;
for(var i:Transform in newContents){
if(i==Item){
Debug.Log(Item.name+" Has been removed from inventroy");
newContents.RemoveAt(index);
shouldend=true;
}
index++;
if(shouldend){
Contents=newContents.ToBuiltin(Transform);
return;
}
}
}
function DebugInfo(){
Debug.Log("Inventory Debug - Contents");
items=0;
for(var i:Transform in Contents){
items++;
Debug.Log(i.name);
}
Debug.Log("Inventory contains "+items+" Item(s)");
}
Any help would be GREATLY appreciated. Thanks in advance!
Comment
Your answer
Follow this Question
Related Questions
Raycast based on crosshair on screen 1 Answer
Raycast hitting objects to the left of my player 1 Answer
Ray Cast not working for camera. 1 Answer
Raycast in camera 1 Answer