// // Use this for initialization // void Start() // { // } // 储藏车厢存储材料 public void StoreMat(Resmaterial material) { string MatName = material.name; if (MatName == "Wood") { // 车厢已满则返回 if (WoodStorage.Count == WoodCapacity) { return; } else if (WoodStorage.Count == 0) { // 将当前资源块放到车厢底 material.transform.parent = gameObject.transform; material.transform.localPosition = new Vector3(0, 0.7f, -0.25f); material.transform.localEulerAngles = Vector3.zero; material.transform.localScale = new Vector3(1, 1, 0.5f); WoodStorage.Add(material); } else { // 将当前资源块摞上去 material.transform.parent = gameObject.transform; material.transform.localPosition = WoodStorage[WoodStorage.Count - 1].transform.localPosition + new Vector3(0, 0.2f, 0); material.transform.localEulerAngles = Vector3.zero; material.transform.localScale = new Vector3(1, 1, 0.5f); WoodStorage.Add(material); } } else { // 车厢已满则返回 if (IronStorage.Count == IronCapacity) { return; } else if (IronStorage.Count == 0) { // 将当前资源块放到车厢底 material.transform.parent = gameObject.transform; material.transform.localPosition = new Vector3(0, 0.7f, 0.05f); material.transform.localEulerAngles = new Vector3(0, 0, 0); material.transform.localScale = new Vector3(1, 1, 0.5f); IronStorage.Add(material); } else { // 将当前资源块摞上去 material.transform.parent = gameObject.transform; material.transform.localPosition = IronStorage[IronStorage.Count - 1].transform.localPosition + new Vector3(0, 0.2f, 0); material.transform.localEulerAngles = new Vector3(0, 0, 0); material.transform.localScale = new Vector3(1, 1, 0.5f); IronStorage.Add(material); } } }
/// <summary> /// 捡起相同的材料 /// </summary> /// <param name="item">材料</param> /// <param name="n">手中已经有n个材料</param> public void EquipSameMaterial(GameObject itemOnGround, int n) { // handState = HANDSTATE.MATERIAL; // 设置父物件为右手 itemInHand = rightHand.transform.GetChild(0).gameObject; itemOnGround.transform.SetParent(itemInHand.transform); Resmaterial res = itemInHand.GetComponent <Resmaterial>(); // 手里材料的数量 res.Size += itemOnGround.GetComponent <Resmaterial>().Size; // 关闭材料的碰撞框,不需要再检测 itemOnGround.GetComponent <BoxCollider>().enabled = false; // 设置相对位置 itemOnGround.transform.localPosition = new Vector3(0, 0.2f * n, 0); // 旋转为初始值 itemOnGround.transform.localRotation = Quaternion.identity; }
public void PileMaterial(GameObject itemOnGround) { // 手上物体的size Resmaterial rmInHand = itemInHand.GetComponent <Resmaterial>(); // 获取地上的材料的脚本 Resmaterial rmOnGround = itemOnGround.GetComponent <Resmaterial>(); if (rmOnGround.Size + rmInHand.Size <= rmInHand.Capacity) // 如果总数不超过3,则可以堆叠 { handState = HANDSTATE.EMPTY; // 获取手里的所有材料 Resmaterial[] materials = rightHand.GetComponentsInChildren <Resmaterial>(); for (int i = 0; i < materials.Length; i++) { // 成为地上材料的子物体 materials[i].transform.SetParent(itemOnGround.transform); // 设置相对位置 materials[i].transform.localPosition = new Vector3(0, 0.5f * rmOnGround.Size, 0); materials[i].transform.localRotation = Quaternion.identity; // 地上物体的size增加 rmOnGround.Size++; } // 开启碰撞框 itemInHand.transform.GetComponent <BoxCollider>().enabled = false; // 解绑itemInHand itemInHand = null; } else { UnloadMaterial(); EquipMaterial(itemOnGround); } }