コード例 #1
0
ファイル: RoomComponent.cs プロジェクト: saddamsial/ggj-2020
    private void OnTriggerExit(Collider other)
    {
        RoomInhabitantComponent inhabitant = other.GetComponentInParent <RoomInhabitantComponent>();

        if (inhabitant != null)
        {
            inhabitant.OnRoomExited(this);
            _roomInhabitants.Remove(inhabitant);
        }

        CleanUpInhabitants();
    }
コード例 #2
0
ファイル: RoomComponent.cs プロジェクト: saddamsial/ggj-2020
    private void OnTriggerEnter(Collider other)
    {
        RoomInhabitantComponent inhabitant = other.GetComponentInParent <RoomInhabitantComponent>();

        if (inhabitant != null)
        {
            _roomInhabitants.Add(inhabitant);
            inhabitant.OnRoomEntered(this);
        }

        CleanUpInhabitants();
    }
コード例 #3
0
    private void ApplyWoosh(RoomInhabitantComponent inhabitant, Vector3 suctionPoint)
    {
        Rigidbody rigidBody = inhabitant.PhysicsRigidBody;

        if (rigidBody != null)
        {
            Vector3 directionToAirlock = (suctionPoint - rigidBody.transform.position).WithY(0).normalized;

            bool isPastAirlock = Vector3.Dot(GetAirlockForward(), directionToAirlock) < 0;
            if (!isPastAirlock)
            {
                Vector3 ventForce = directionToAirlock * VentForceScale * Time.deltaTime;

                rigidBody.AddForce(ventForce, ForceMode.Acceleration);
            }
        }

        inhabitant.NotifySuckedIntoSpace();
    }
コード例 #4
0
    private IEnumerator WooshAsync()
    {
        for (float timer = 0; timer < 1.5f; timer += Time.deltaTime)
        {
            yield return(null);
        }

        WaitForFixedUpdate fixedUpdate  = new WaitForFixedUpdate();
        Vector3            suctionPoint = transform.position;

        while (CurrentAirlockState == EAirlockState.Open)
        {
            for (int i = 0; i < _room.RoomInhabitants.Count; ++i)
            {
                RoomInhabitantComponent inhabitant = _room.RoomInhabitants[i];
                ApplyWoosh(inhabitant, suctionPoint);
            }

            yield return(fixedUpdate);
        }
    }