public static void FixDish() { foreach (MeshCollider mc in FindObjectsOfType <MeshCollider>()) { if (mc.gameObject.name == "dish armored hull") { MappingHelpersPack.DamageReceiver dr = mc.gameObject.AddComponent <MappingHelpersPack.DamageReceiver>(); dr.directional = true; dr.localDir = Vector3.forward; dr.objToDie = dr.transform.parent.gameObject; } } }
void LateUpdate() { t -= Time.deltaTime; if (t < 0) { t = 0.1f; Ray ray = Camera.main.ViewportPointToRay(new Vector3(0.5f, 0.5f, 0f)); // Ray ray = Camera.main.ScreenPointToRay(Camera.main.transform.forward); float radius = 0.05f; bool hitt = false; foreach (RaycastHit hit in Physics.SphereCastAll(ray, radius)) { // Debug.Log("hit;"+hit.collider.name); FlyingOnion fo = hit.collider.gameObject.GetComponent <FlyingOnion> (); DishOnion disho = hit.collider.gameObject.GetComponent <DishOnion>(); if (disho) { // Debug.Log("Showy"); if (ItemPopup.instance) { ItemPopup.instance.Show(disho.transform.position + Vector3.up * 0.25f, "Destroy this! " + disho.DishesRemainingInfo[0].ToString() + " of " + disho.DishesRemainingInfo[1].ToString() + " dishes remaining."); } break; } if (fo) { fo.CameraHovering(); // Let onion "know" it has been seen -- causes onion to move for 1-2 seconds } DamageReceiver dr = hit.collider.gameObject.GetComponent <DamageReceiver> (); if (dr || fo || disho) { hitt = true; Crosshair.instance.SetState(Crosshair.State.Destructible); } } if (!hitt) { Crosshair.instance.SetState(Crosshair.State.Nominal); } } }
void Update() { RaycastHit hit; if (Physics.Raycast(new Ray(rp.lastPosition, rp.nowPosition - rp.lastPosition), out hit, (rp.lastPosition - rp.nowPosition).magnitude * 4f)) { DamageReceiver dr = hit.collider.GetComponent <DamageReceiver> (); if (dr) { if (!dr.directional || dr.DirectionValid(rp.lastPosition - rp.nowPosition)) { dr.TakeDamage(damageAmount); dr.DamageFx(this); Destroy(this); } } } }