void OnCollisionEnter2D(Collision2D collision) { NPlayerController np = collision.collider.gameObject.GetComponent <NPlayerController>(); NWeapon w = collision.collider.gameObject.GetComponent <NWeapon>(); if (np != null) { if (!np.GetMovementBool("pushed")) { np.HitByAir(-collision.contacts[0].normal); } if (!collided) { IEnumerator coroutine = Explosion(false); StartCoroutine(coroutine); } } if (w != null) { w.HitByAir(-collision.contacts[0].normal, wielder); if (!collided) { IEnumerator coroutine = Explosion(false); StartCoroutine(coroutine); } } else if (collision.collider.gameObject.layer.Equals(LayerMask.NameToLayer("Platforms"))) { if (!collided) { IEnumerator coroutine = Explosion(true); StartCoroutine(coroutine); } } }
private void OnTriggerEnter2D(Collider2D collider) { NWeapon w = collider.gameObject.GetComponent <NWeapon>(); if (w != null) { w.HitByEarth(); } }
void Start() { rigidBody = GetComponent <Rigidbody2D>(); boxCollider = GetComponent <BoxCollider2D>(); animator = GetComponent <Animator>(); spriteRenderer = GetComponent <SpriteRenderer>(); fireParticles = transform.GetChild(0).GetComponent <ParticleSystem>(); bloodParticles = transform.GetChild(1).GetComponent <ParticleSystem>(); joystick = ReInput.players.GetPlayer(playerNumber); movementBools = new Dictionary <string, bool>(); movementBools["pushed"] = false; movementBools["succed"] = false; movementBools["bounced"] = false; movementBools["frozen"] = false; movementBools["ashed"] = false; movementBools["spiked"] = false; movementBools["slipped"] = false; movementBools["doubled"] = false; movementBools["active"] = false; NStateInfo info = new NStateInfo(this, rigidBody, boxCollider, joystick, animator, spriteRenderer, balanceData); movementStates = new NState[13]; movementStates[0] = new NStateNormal(info, EState.normal); movementStates[1] = new NStateJump1(info, EState.jump1); movementStates[2] = new NStateJump2(info, EState.jump2); movementStates[3] = new NStateAshes(info, EState.ashes); movementStates[4] = new NStateAirborne(info, EState.airborne); movementStates[5] = new NStateSucc(info, EState.succ, transform.position); movementStates[6] = new NStatePushed(info, EState.pushed, Vector2.zero); movementStates[7] = new NStateBounced(info, EState.bounced, info.bd.bouncedInitialVelocity, info.bd.bouncedTransitionLockoutFrames); movementStates[8] = new NStateSpiked(info, EState.spiked, Vector2.zero); movementStates[9] = new NStateSlipped(info, EState.slipped); movementStates[10] = new NStateSlam(info, EState.slam); movementStates[11] = new NStateBounced(info, EState.boinked, info.bd.boinkedInitialVelocity, info.bd.boinkedTransitionLockoutFrames); movementStates[12] = new NStateInactive(info, EState.inactive); movementState = movementStates[12]; weapons = new SortedList <EElement, Queue <NWeapon> >(6); weapons[EElement.air] = new Queue <NWeapon>(weaponCounts[0]); weapons[EElement.fire] = new Queue <NWeapon>(weaponCounts[1]); weapons[EElement.water] = new Queue <NWeapon>(weaponCounts[2]); weapons[EElement.earth] = new Queue <NWeapon>(weaponCounts[3]); weapons[EElement.plasma] = new Queue <NWeapon>(weaponCounts[4]); weapons[EElement.none] = new Queue <NWeapon>(1); weaponEquipped = EElement.air; weapon = null; totem = null; totemDist = Mathf.Infinity; living = true; avatar = false; }
public void TrySpawnAir() { if (weaponEquipped == EElement.air && weapons[EElement.air].Count < weaponCounts[(int)EElement.air]) { Transform airTransform = Instantiate(airPrefab); NWeapon w = airTransform.GetComponent <NWeapon>(); w.SetWielder(this, joystick); airTransform.SetParent(transform); weapons[EElement.air].Enqueue(w); weaponEquipped = EElement.air; SetAllWeaponAngles(); weapon = weapons[EElement.air].Peek(); } }
void OnCollisionEnter2D(Collision2D collision) { NPlayerController np = collision.collider.gameObject.GetComponent <NPlayerController>(); NWeapon w = collision.collider.gameObject.GetComponent <NWeapon>(); if (np != null) { np.HitByWater(); StartCoroutine("Explosion"); } else if (collision.collider.gameObject.layer.Equals(LayerMask.NameToLayer("Platforms"))) { StartCoroutine("Explosion"); } else if (w != null) { w.HitByWater(); } }
void OnCollisionEnter2D(Collision2D collision) { NPlayerController np = collision.collider.gameObject.GetComponent <NPlayerController>(); NWeapon w = collision.collider.gameObject.GetComponent <NWeapon>(); if (np != null && np.GetLivingStatus() && np != wielder) { np.HitByEarth(-collision.contacts[0].normal); } if (w != null) { w.HitByEarth(); } else if (collision.collider.gameObject.layer.Equals(LayerMask.NameToLayer("Platforms")) && (wielder != null)) { wielder = null; decelerating = true; falling = true; rb.gravityScale = gravityScale; } }
private void SpawnWeapons() { if (totem.Pickup()) { int weaponsCount = totem.GetWeaponCount(); EElement element = totem.GetElement(); int originalWeaponCount = weapons[element].Count; foreach (NWeapon air in weapons[EElement.air]) { Destroy(air.gameObject); } weapons[EElement.air].Clear(); for (int i = 0; i < weaponsCount && weapons[element].Count < weaponCounts[(int)element]; i++) { Transform weaponTransform; NWeapon w; if (totem.GetElement() != EElement.earth) { weaponTransform = Instantiate(totem.GetWeapon()); w = weaponTransform.GetComponent <NWeapon>(); } else { weaponTransform = totem.GetWeapon(); w = weaponTransform.GetComponent <NWeaponEarth>(); } w.SetWielder(this, joystick); weaponTransform.SetParent(transform); weapons[element].Enqueue(w); } weaponEquipped = element; SetAllWeaponAngles(); weapon = weapons[element].Peek(); } }
void Update() { if (movementState != null) { movementState.StateUpdate(); } if (living) { grabButton = joystick.GetButtonDown("Grab Weapon"); if (grabButton && totem != null && totem.GetCooledDown()) { if (weapons[totem.GetElement()].Count < weaponCounts[(int)totem.GetElement()]) { if (avatar) { SpawnWeapons(); } else if (!avatar && (!(weapon != null) || totem.GetElement() == weaponEquipped || weaponEquipped == EElement.air)) { SpawnWeapons(); } } if (onFire != null && totem.GetElement() == EElement.water) { Extinguish(); Destroy(weapons[EElement.water].Dequeue().gameObject); SetWeaponAngles(weaponEquipped, Mathf.Infinity, Mathf.Infinity, Mathf.Infinity, Mathf.Infinity); weapon = weapons[weaponEquipped].Peek(); } } dischargeButton = joystick.GetButtonDown("Discharge Weapon"); if (dischargeButton && weapon != null) { Vector2 angle = new Vector2(joystick.GetAxis("Aim Horizontal"), joystick.GetAxis("Aim Vertical")).normalized; weapon.Discharge(angle, boxCollider, spriteRenderer.flipX); weapons[weaponEquipped].Dequeue(); weapon = null; if (weapons[weaponEquipped].Count != 0) { SetWeaponAngles(weaponEquipped, Mathf.Infinity, Mathf.Infinity, Mathf.Infinity, Mathf.Infinity); weapon = weapons[weaponEquipped].Peek(); } else { if (avatar && CycleWeaponEquipped()) { weapon = weapons[weaponEquipped].Peek(); SetAllWeaponAngles(); } else { weaponEquipped = EElement.air; } } } shieldButton = joystick.GetButtonDown("Shield"); if (shieldButton && weapon != null) { } swapButton = joystick.GetButtonDown("Swap Weapon"); if (avatar && swapButton) { EElement oldWeapon = weaponEquipped; if (CycleWeaponEquipped()) { weapon = weapons[weaponEquipped].Peek(); } } } }