protected override void TriggerActivated(TriggeringGameItem tgi, TriggerInteractionType type, ExtraTriggerData extras) { if (tgi == leftPortal && type == TriggerInteractionType.Portal_Player) { shouldAdvance = true; } }
protected override void TriggerActivated(TriggeringGameItem tgi, TriggerInteractionType type, ExtraTriggerData extras) { if (ballLeft && crateRight) { if (tgi == rightPortal && type == TriggerInteractionType.Portal_Player) { shouldAdvance = true; } } else if (crateRight) { if (tgi == leftPortal && type == TriggerInteractionType.Portal_Inanimate && extras.colliderLevelItem.gameObject == ball) { ballLeft = true; ParticlesManager.INSTANCE.DestroyCrateParticles(ball.transform.position); ball.SetActive(false); GameObject.Destroy(ball); } } else if (plate.IsPlateGood) { if (tgi == rightPortal && type == TriggerInteractionType.Portal_Inanimate && extras.colliderLevelItem.gameObject == crate) { crateRight = true; ParticlesManager.INSTANCE.DestroyCrateParticles(crate.transform.position); crate.SetActive(false); GameObject.Destroy(crate); } } }
public override void Create(Transform parent) { savedParent = parent; leftPortal = CreateTGI( LevelItemType.Portal, new Vector3(-7f, 0, 0), Quaternion.identity, parent ); AddTrigger(leftPortal, TriggerInteractionType.Portal_Player, TriggerData.leftPortalNormal); AddTrigger(leftPortal, TriggerInteractionType.Portal_Inanimate, TriggerData.leftPortalNormal); rightPortal = CreateTGI( LevelItemType.Portal, new Vector3(7f, 0, 0), Quaternion.AngleAxis(180, Vector3.up), parent ); AddTrigger(rightPortal, TriggerInteractionType.Portal_Player, TriggerData.rightPortalNormal); AddTrigger(rightPortal, TriggerInteractionType.Portal_Inanimate, TriggerData.rightPortalNormal); crate = CreateSimpleLevelItem( LevelItemType.Crate, new Vector3(0, 8f, 0), Quaternion.AngleAxis(Random.Range(0f, 360f), Vector3.forward), parent ); }
public void Trigger(TriggeringGameItem tgi, TriggerInteractionType type, ExtraTriggerData extras) { TriggerActivated(tgi, type, extras); if (triggers.ContainsKey(tgi) && triggers[tgi].ContainsKey(type)) { GameSceneManager.INSTANCE.TriggerPoint(shouldAdvance, triggers[tgi][type], extras); } }
public override void Create(Transform parent) { leftPortal = CreateTGI( LevelItemType.Portal, new Vector3(-7f, 0, 0), Quaternion.identity, parent ); TriggerData td = new TriggerData() { playerPositionOffset = new Vector3(13.1f, 0f, 0f), moveObject = true }; AddTrigger(leftPortal, TriggerInteractionType.Portal_Player, td); AddTrigger(leftPortal, TriggerInteractionType.Portal_Inanimate, td); rightPortal = CreateTGI( LevelItemType.Portal, new Vector3(7f, 0f, 0), Quaternion.AngleAxis(180, Vector3.up), parent ); td = new TriggerData() { playerPositionOffset = new Vector3(-13.1f, 0f, 0f), moveObject = true }; AddTrigger(rightPortal, TriggerInteractionType.Portal_Player, td); AddTrigger(rightPortal, TriggerInteractionType.Portal_Inanimate, td); crate = CreateSimpleLevelItem( LevelItemType.Crate, new Vector3(2f, 8f, 0), Quaternion.AngleAxis(Random.Range(0f, 360f), Vector3.forward), parent ); ball = CreateSimpleLevelItem( LevelItemType.Ball, new Vector3(2f, 10f, 0), Quaternion.AngleAxis(Random.Range(0f, 360f), Vector3.forward), parent ); plate = CreateSimpleLevelItem( LevelItemType.Plate, new Vector3(-2f, 0f, 0), Quaternion.identity, parent ).GetComponent <PlateGameItem>(); plate.SetGoodColliders(new List <Collider>() { ball.GetComponent <Collider>() }); }
protected void AddTrigger(TriggeringGameItem tgi, TriggerInteractionType type, TriggerData tData) { if (!triggers.ContainsKey(tgi)) { triggers.Add(tgi, new Dictionary <TriggerInteractionType, TriggerData>()); } if (triggers[tgi].ContainsKey(type)) { triggers[tgi][type] = tData; } else { triggers[tgi].Add(type, tData); } }
protected TriggeringGameItem CreateTGI(LevelItemType type, Vector3 position, Quaternion rotation, Transform parent) { TriggeringGameItem tgi = GameObject.Instantiate( GameSceneManager.INSTANCE.GetPrefab(type), position, rotation, parent ).GetComponent <TriggeringGameItem>(); if (tgi != null) { tgi.level = this; } return(tgi); }
public override void Create(Transform parent) { savedParent = parent; CreateSimpleLevelItem( LevelItemType.MediumPlatform, new Vector3(-7f, 1.5f, 0), Quaternion.identity, parent ); leftPortal = CreateTGI( LevelItemType.Portal, new Vector3(-7f, 3, 0), Quaternion.identity, parent ); TriggerData td = new TriggerData() { playerPositionOffset = new Vector3(13.1f, -3f, 0f), moveObject = true }; AddTrigger(leftPortal, TriggerInteractionType.Portal_Player, td); AddTrigger(leftPortal, TriggerInteractionType.Portal_Inanimate, td); rightPortal = CreateTGI( LevelItemType.Portal, new Vector3(7f, 0, 0), Quaternion.AngleAxis(180, Vector3.up), parent ); td = new TriggerData() { playerPositionOffset = new Vector3(-13.1f, 3f, 0f), moveObject = true }; AddTrigger(rightPortal, TriggerInteractionType.Portal_Player, td); AddTrigger(rightPortal, TriggerInteractionType.Portal_Inanimate, td); ball = CreateSimpleLevelItem( LevelItemType.Ball, new Vector3(-4.5f, 3.5f, 0), Quaternion.AngleAxis(Random.Range(0f, 360f), Vector3.forward), parent ); }
public override void Create(Transform parent) { leftPortal = CreateTGI( LevelItemType.Portal, new Vector3(-7f, 0, 0), Quaternion.identity, parent ); AddTrigger(leftPortal, TriggerInteractionType.Portal_Player, TriggerData.leftPortalNormal); TriggeringGameItem rightPortal = CreateTGI( LevelItemType.Portal, new Vector3(7f, 0, 0), Quaternion.AngleAxis(180, Vector3.up), parent ); AddTrigger(rightPortal, TriggerInteractionType.Portal_Player, TriggerData.rightPortalNormal); }
protected override void TriggerActivated(TriggeringGameItem tgi, TriggerInteractionType type, ExtraTriggerData extras) { if (crateRight && crateLeft) { if (tgi == leftPortal && type == TriggerInteractionType.Portal_Player) { shouldAdvance = true; } } else if (crateLeft) { if (tgi == rightPortal && type == TriggerInteractionType.Portal_Inanimate && extras.colliderLevelItem.gameObject == crate) { crateRight = true; ParticlesManager.INSTANCE.DestroyCrateParticles(crate.transform.position); crate.SetActive(false); GameObject.Destroy(crate); PortalsAudio.INSTANCE.right2.Play(); } } else { if (tgi == leftPortal && type == TriggerInteractionType.Portal_Inanimate && extras.colliderLevelItem.gameObject == crate) { crateLeft = true; ParticlesManager.INSTANCE.DestroyCrateParticles(crate.transform.position); crate.SetActive(false); GameObject.Destroy(crate); crate = CreateSimpleLevelItem( LevelItemType.Crate, new Vector3(0, 8f, 0), Quaternion.AngleAxis(Random.Range(0f, 360f), Vector3.forward), savedParent ); PortalsAudio.INSTANCE.left2.Play(); } } }
protected override void TriggerActivated(TriggeringGameItem tgi, TriggerInteractionType type, ExtraTriggerData extras) { shouldAdvance = true; }
protected abstract void TriggerActivated(TriggeringGameItem tgi, TriggerInteractionType type, ExtraTriggerData extras);
public void Trigger(TriggeringGameItem tgi, TriggerInteractionType type) { Trigger(tgi, type, new ExtraTriggerData()); }