private void throwObject(Vector3 impulseDirection) { rb.mass -= grabbedObject.objectMass; grabbedObject.transform.SetParent(null); // grabbedObject.GetComponent<Collider2D>().enabled = false; grabbedObject.GetComponent <Rigidbody2D>().velocity = -impulseDirection; grabbedObject = null; }
void processObjectCollision(GameObject obj) { if (grabbedObject != null) { return; } else { grabbedObject = obj.GetComponent <ObjectScript>(); obj.transform.position = transform.position + new Vector3(0.5f, 0, 0); obj.transform.SetParent(transform); grabbedObject.GetComponent <Collider2D>().enabled = false; rb.AddForce(-impulseDirection * playerSpeed, ForceMode2D.Impulse); rb.mass += grabbedObject.objectMass; rb.AddForce(impulseDirection * playerSpeed, ForceMode2D.Impulse); } }
/// <summary> /// Called after this Registry Entry has been registered to its Registry. You should never call this yourself. /// </summary> protected internal override void PostRegister() { if (Mat == null) { Mat = new Material(Shader.Find("Unlit/Transparent Cutout")) { mainTexture = Tex }; Mat.SetFloat("_Cutoff", 0.5f); } else { Tex = Mat.mainTexture; } if (FlyHeadTex != null || FlyHeadMat != null) { if (FlyHeadMat == null) { FlyHeadMat = new Material(Shader.Find("Unlit/Transparent Cutout")) { mainTexture = FlyHeadTex }; FlyHeadMat.SetFloat("_Cutoff", 0.5f); } else { FlyHeadTex = FlyHeadMat.mainTexture; } } if (FlyWingTex != null || FlyWingMat != null) { if (FlyWingMat == null) { FlyWingMat = new Material(Shader.Find("Unlit/Transparent Cutout")) { mainTexture = FlyWingTex }; FlyWingMat.SetFloat("_Cutoff", 0.5f); } else { FlyWingTex = FlyWingMat.mainTexture; } } string name; switch (Type) { case ObjectType.ORE: name = "ore"; break; case ObjectType.TREE: name = "tree"; break; case ObjectType.PLANT: name = "plant"; break; case ObjectType.BUGSPOT: name = "bugspot"; break; default: name = "object"; break; } Object = UnityEngine.Object.Instantiate((GameObject)Resources.Load("obj/" + (name != "object" && FlyHeadMat == null && FlyWingMat == null ? name : "bugspot") + "0")); Object.name = name; ObjectScript script = Object.GetComponent <ObjectScript>(); script.id = GetID(); script.b.GetComponent <MeshRenderer>().material = Mat; script.GetComponent <BoxCollider>().center += (Vector3)ColliderOffset; if (script.b.transform.childCount > 0) { Transform fly = script.b.transform.GetChild(0).GetChild(0); if (fly.name == "fly") { foreach (Transform child in fly) { if (child.name == "Plane") { if (FlyHeadMat != null) { child.GetComponent <MeshRenderer>().material = FlyHeadMat; } } else if (child.name.StartsWith("Plane")) { if (FlyHeadMat != null) { child.GetComponent <MeshRenderer>().material = FlyWingMat; } } } } } GadgetCoreAPI.AddCustomResource(ResourcePath = "obj/" + name + ID, Object); }