void Shoot(Vector3 p, int num) { if (num == this.player) { p.z = 1; p = AimTracker.AxesToScreen(p); Ray r = Camera.main.ScreenPointToRay(p); RaycastHit rch; if (Physics.Raycast(r, out rch)) { Rigidbody rb = rch.collider.GetComponent <Rigidbody>(); if (rb != null) { Vector3 pulse = Vector3.up * upForce + r.direction.normalized * pushForce; rb.AddForce(pulse, ForceMode.Impulse); rb.AddTorque(Quaternion.AngleAxis(Random.Range(torque, -torque), Random.onUnitSphere).eulerAngles); if (!rb.isKinematic) { GameObject.Instantiate(goodHitMarker, rch.point, Quaternion.LookRotation(rch.normal, Random.onUnitSphere)); } } GameObject.Instantiate(hitMarker, rch.point, Quaternion.LookRotation(rch.normal, Random.onUnitSphere)); } } }
// This has the same signature as "AimTrackerEvent" in the AimTracker.cs file // So we can use it to listen for AimTrackerEvent broadcasts // void Vector3 int // vvvv vvvvvvv vvv void MoveMe(Vector3 p, int pnum) { if (pnum == this.player) { p.z = 1; p = AimTracker.AxesToScreen(p); p = Camera.main.ScreenToWorldPoint(p); transform.position = p; } }