GameObject MakeTile(int direction) { Vector3 newTilePosition = new Vector3(objectTransform.position.x + (spriteWidth * direction), objectTransform.position.y, objectTransform.position.z); Transform newTile = poolerToUse.UsePooledObject(newTilePosition, objectTransform.rotation).transform; //Transform newTile = (Transform) Instantiate(objectTransform, newTilePosition, objectTransform.rotation); newTile.name = objectTransform.name; //if the sprite is not a pattern, we can reverse the scale, so the borders of the image //will connect a little better (ideally we must use a pattern, this is just a small fix) if (!isPatternSprite) { newTile.localScale = new Vector3(newTile.localScale.x * -1, newTile.localScale.y, newTile.localScale.z); } newTile.parent = objectTransform.parent; if (direction > 0) { RepeatSprite repeatSprite = newTile.GetComponent <RepeatSprite>(); repeatSprite.SetHasLeft(true); repeatSprite.SetTileOnLeft(gameObject); } else { RepeatSprite repeatSprite = newTile.GetComponent <RepeatSprite>(); repeatSprite.SetHasRight(true); repeatSprite.SetTileOnRight(gameObject); } return(newTile.gameObject); }
void OnTriggerEnter2D(Collider2D other) { if (other.tag == Tags.playerBox) { BoxEnemyChoice weaponEnemyChoice = other.gameObject.GetComponent <BoxEnemyChoice>(); //string result = RockPaperScissors.WeaponResult(weaponCollision.weaponType, enemyType); if (weaponEnemyChoice.weaponType == enemyType) { gameControllerScoreScript.addScore(enemyPoints, enemyIndex); //animator.SetBool(animatorHash.dead, true); weaponEnemyChoice.KilledEnemy(); if (transform.localScale == vectorUnScaled) { if (!AudioManager.getIsPlaying(deathAudio.ToString())) { AudioManager.PlaySound(deathAudio.ToString(), Vector3.zero); } } if (useSparkles) { sparklesPooler.UsePooledObject(transform.position, Quaternion.identity); } gameObject.SetActive(false); } else { //gameControllerScoreScript.subtractScore(0); ////Destroy(gameObject); AudioManager.PlaySound(AudioNames.PlayerDraw.ToString(), Vector3.zero); gameObject.SetActive(false); } enemyCollider2d.enabled = false; } }
public override void ExecuteAction (Vector3 dragPosition){ Vector3 vectorRotation = new Vector3(0,0,Random.Range(0f,360f)); Quaternion newRotation = Quaternion.Euler (vectorRotation); GameObject splashObj = splashesPooler.UsePooledObject (dragPosition, newRotation); splashObj.GetComponent<SpriteRenderer> ().color = splashColor; }
public void StartDrag(Vector3 point) { //CODE WITH ONLY ONE RAYCASTHIT Ray ray = Camera.main.ScreenPointToRay(point); RaycastHit2D hit = Physics2D.Raycast(ray.origin, ray.direction); if (hit != null) { if (hit.collider != null) { //the hit.collider gets the object directly clicked. If you use only the hit, you will get the parent switch (hit.collider.transform.gameObject.tag) { case Tags.enemy: boxMovement = null; objectBeingDragged = hit.collider.transform.gameObject; enemyCollisions = objectBeingDragged.GetComponent <EnemyCollisions> (); enemyCollisions.rbody2d.velocity = Vector2.zero; gravityOld = enemyCollisions.rbody2d.gravityScale; enemyCollisions.rbody2d.gravityScale = gravityWhileDragging; enemyCollisions.spriteSwap.SwapToSprite(1); if (useFastFall) { enemyCollisions.movement.speed = fastFallSpeed; } speedOld = enemyCollisions.movement.speed; enemyCollisions.movement.speed = 0f; Vector2 positionToGo = Camera.main.ScreenToWorldPoint(point); jointPosition.transform.position = positionToGo; enemyCollisions.joint.enabled = true; enemyCollisions.getEnemyData().ExecuteSecondaryStartDragAction(positionToGo); break; case Tags.playerBoxDrag: objectBeingDragged = hit.collider.transform.gameObject; boxMovement = objectBeingDragged.GetComponent <BoxMovement> (); if (boxMovement.boxEnableDisable.getIsEnabled()) { enemyCollisions = null; Vector2 positionNew = Camera.main.ScreenToWorldPoint(point); draggedBoxObject.transform.position = positionNew; boxMovement.StartDragging(); draggedBox.StartDragging(boxMovement, boxMovement.getSpriteUsed(), boxMovement.getSpriteFrenteUsed(), boxMovement.enemyIndex); } else { objectBeingDragged = null; boxMovement = null; enemyCollisions = null; } break; case Tags.playerBox: objectBeingDragged = hit.collider.transform.gameObject.GetComponent <FrontBoxMovement> ().objectWithBoxMovement; boxMovement = objectBeingDragged.GetComponent <BoxMovement> (); if (boxMovement.boxEnableDisable.getIsEnabled()) { enemyCollisions = null; Vector2 positionNew = Camera.main.ScreenToWorldPoint(point); draggedBoxObject.transform.position = positionNew; boxMovement.StartDragging(); draggedBox.StartDragging(boxMovement, boxMovement.getSpriteUsed(), boxMovement.getSpriteFrenteUsed(), boxMovement.enemyIndex); } else { objectBeingDragged = null; boxMovement = null; enemyCollisions = null; } break; case Tags.glass: Vector2 knockPosition = Camera.main.ScreenToWorldPoint(point); glassKnockKnockPooler.UsePooledObject(knockPosition, Quaternion.identity); AudioManager.PlaySound(glassKnockSounds[Random.Range(0, glassKnockSounds.Length)].ToString(), Vector3.zero); objectBeingDragged = null; boxMovement = null; enemyCollisions = null; break; default: objectBeingDragged = null; boxMovement = null; enemyCollisions = null; break; } } } /*multiple raycasthit * // Construct a ray from the current touch coordinates * Ray ray = Camera.main.ScreenPointToRay(point); * * // Move to hit * RaycastHit[] allHits = Physics.RaycastAll(ray); * List<RaycastHit> closestHit = new List<RaycastHit>(); * * bool containsPriority = false; * * if(allHits.Length > 0){ * for(int i=0; i<allHits.Length;i++){ * if( i==0 ){ * if(!closestHit.Contains(allHits[i])){ * closestHit.Add(allHits[i]); * containsPriority = CheckRaycastHitPriority(allHits[i]) || containsPriority; * } * } * * if( CheckRaycastHitPriority(allHits[i]) || !containsPriority ){ * if(!closestHit.Contains(allHits[i])){ * closestHit.Add(allHits[i]); * containsPriority = CheckRaycastHitPriority(allHits[i]) || containsPriority; * } * } * } * * if(!containsPriority && !HasElementWithTag(closestHit, Tags.wall)){ * MoveAllSelected(closestHit[0].point); * } * * if(containsPriority && HasElementWithTag(closestHit, Tags.enemyClickArea)){ * closestHit = RemoveElementsWithoutTag(closestHit, Tags.enemyClickArea); * if (closestHit.Count > 0){ * for(int i=0; i<closestHit.Count; i++){ * AttackWithAllSelected(closestHit[i].collider.transform.parent.gameObject); * } * } * } */ /* * if(containsPriority && HasElementWithTag(closestHit, Tags.playerClickArea)){ * closestHit = RemoveElementsWithoutTag(closestHit, Tags.playerClickArea); * if (closestHit.Count > 0){ * * closestHit[0].collider.transform.parent.GetComponent<CharacterMovement>().CharacterClickedDeselectAllButtons(); * RemoveAllFromSelected(); * * for(int i=0; i<closestHit.Count; i++){ * closestHit[i].collider.transform.parent.GetComponent<CharacterMovement>().CharacterClickedWithoutDeselectingOthers(); * } * } * } */ }
public void UseSparkle() { sparklesPooler.UsePooledObject(transform.position, Quaternion.identity); sparklesPooler.UsePooledObject(transform.position, Quaternion.identity); sparklesPooler.UsePooledObject(transform.position, Quaternion.identity); }