Пример #1
0
 public static void AddRoom(UFRoom room)
 {
     if (instance.rooms == null)
     {
         instance.rooms = new List <UFRoom>();
     }
     instance.rooms.Add(room);
 }
Пример #2
0
    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);
            }
        }
    }
Пример #3
0
    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);
    }
Пример #4
0
    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);
    }