public static void AddRoom(UFRoom room) { if (instance.rooms == null) { instance.rooms = new List <UFRoom>(); } instance.rooms.Add(room); }
public void RagdollUpdate() { Rigidbody ragHip = playerAnim.GetComponentInChildren <Rigidbody>(); UFRoom room = UFLevel.GetRoom(ragHip.position); if (room != null && room.InLiquid(ragHip.position)) { foreach (Rigidbody rb in playerAnim.GetComponentsInChildren <Rigidbody>()) { rb.AddForce(10f * Vector3.up); rb.velocity *= Mathf.Exp(-2f * Time.deltaTime); } } }
private void Update() { if (player == null) { return; } UFRoom room = GetComponentInParent <UFRoom>(); Vector3 playerPos = player.transform.position + .8f * Vector3.up; if (!room.IsInside(playerPos)) { return; } player.SwimState(this); ApplyDPS(player.GetComponent <UFPlayerLife>(), type); }
private bool InRoom(Vector3 pos, Vector3 dir) { Ray ray = new Ray(pos, dir); RaycastHit[] hits = Physics.RaycastAll(ray); float bestDistance = float.PositiveInfinity; UFRoom bestRoom = null; foreach (RaycastHit hit in hits) { if (hit.distance >= bestDistance) { continue; } UFRoom room = hit.collider.GetComponentInParent <UFRoom>(); if (room != null) { bestRoom = room; bestDistance = hit.distance; } } return(bestRoom == this); }