private void OnTriggerStay(Collider collider) { if (IsCatched) { return; } _objIi = collider.GetComponent <IInteraction>(); if (_objIi != null && _objIi.IsRaised) { IsCatched = true; _objColider = collider.GetComponent <BoxCollider>(); _objColider.isTrigger = true; _objCanCollect = collider.GetComponent <ICanCollect>(); if (ObjCanCollect) { var player = transform.GetComponentInParent <CharacterController>(); transform.position = player.transform.position; } else { ServiceLocator.Resolve <WeaponController>().Off(); ServiceLocator.Resolve <PocketPCController>().Off(); } _objRb = collider.GetComponent <Rigidbody>(); _objRb.velocity = default; _objTr = collider.transform; _objTr.SetParent(gameObject.transform); } }
/// <summary> /// Kijkt of we een collectable hebben aangeraakt met een object dat een collectable kan collecteren /// </summary> /// <param name="collideObjects">Lijst met alle objecten waar we mee kunnen colliden</param> /// <param name="canCollectObject">object dat kan colliden en beweegt</param> private static void DetectCollectable(List <ICollide> collideObjects, ICanCollect canCollectObject) { foreach (ICollectable collectable in collideObjects.OfType <ICollectable>().ToList()) { if (canCollectObject is ICanCollect && canCollectObject.CollisionRectangle.Intersects(collectable.CollisionRectangle)) { collectable.IsCollected = true; canCollectObject.HasTouchedCollectable = true; collideObjects.Remove(collectable); } } }