public void EndDrag() { if (enemyCollisions != null) { enemyCollisions.joint.enabled = false; enemyCollisions.rbody2d.gravityScale = gravityOld; enemyCollisions.rbody2d.velocity = Vector2.zero; objectBeingDragged.transform.rotation = Quaternion.identity; Vector3 newPosition = objectBeingDragged.transform.position; newPosition.x = jointPosition.transform.position.x; objectBeingDragged.transform.position = newPosition; enemyCollisions.rbody2d.angularVelocity = 0f; enemyCollisions.movement.speed = speedOld; } if (boxMovement != null) { draggedBox.EndDragging(); boxMovement.EndDragging(); } objectBeingDragged = null; enemyCollisions = null; boxMovement = null; }
public void EndDragging() { if (destiny != null) { origin.SwapPosition(destiny.gameObject); } destiny = null; gameObject.SetActive(false); }
void OnTriggerExit2D(Collider2D other) { if (other.tag == Tags.playerBox) { if (other == destiny && destiny != null) { destiny.OtherBoxEndHovering(); destiny = null; } } }
void SpawnRandomWall() { activeWall = Instantiate(walls[Random.Range(0, walls.Count)]) as GameObject; activeWall.AddComponent <MeshCollider>(); activeScript = activeWall.AddComponent <BoxMovement>(); activeScript.Player = Player; activeScript.ObstacleSpeed = ObstacleSpeed; activeWall.transform.position = SpawnPoint; activeWall.transform.eulerAngles = SpawnRotation; ObstacleSpeed += ObstacleSpeed * ObstacleSpeedGain; }
public void StartDragging(BoxMovement originNew, Sprite spriteNew, Sprite spriteFrenteNew, int enemyIndex) { origin = originNew; destiny = null; gameObject.SetActive(true); spriteRenderer.sprite = spriteNew; spriteRendererFrente.sprite = spriteFrenteNew; if (EnemyDataManager.control.getChosenEnemies().Count > enemyIndex) { text.text = EnemyDataManager.control.getChosenEnemies() [enemyIndex].nameEn.ToUpper(); } }
void OnTriggerEnter2D(Collider2D other) { if (other.tag == Tags.playerBoxDrag) { if (other != origin) { if (destiny != null) { destiny.OtherBoxEndHovering(); destiny = null; } destiny = other.gameObject.GetComponent <BoxMovement> (); destiny.OtherBoxStartHovering(); } } }
private IEnumerator Trigger(BoxMovement box) { activatingBox = box; activatingBox.Reset += Box_Reset; psMain.startColor = finishedColor; audioSource.Play(); yield return(new WaitUntil(() => box.IsStationary() && box.IsVisible())); IsFinished = true; if (Finished is Action) { Finished.Invoke(); } activeTriggerCoroutine = null; }
public void Awake() { for (int i = 0; i < allBoxes.Count; i++) { if (allBoxes[i] == null) { BoxMovement boxToRemove = allBoxes [i]; allBoxes.Remove(boxToRemove); } } if (!allBoxes.Contains(this)) { allBoxes.Add(this); } spriteUsed = spriteRendererUsed.sprite; spriteFrenteUsed = spriteRendererFrenteUsed.sprite; startingColor = spriteRendererUsed.color; }
void Start() { move = GetComponent<BoxMovement> (); force = power / Time.fixedDeltaTime; rigBody = GetComponentInParent<Rigidbody> (); friction = force / (maxSpeed * maxSpeed); //slowTurnSpeed = maxSpeed / 5; //text = GameObject.Find ("Log").GetComponent<guiText>(); }
// Use this for initialization void Start() { targetScript = targetObject.GetComponent <BoxMovement>(); }
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(); * } * } * } */ }
void ClearWall() { Destroy(activeWall); activeWall = null; activeScript = null; }
// Use this for initialization void Start() { machine = GetComponent<StateMachine> (); move = GetComponent<BoxMovement> (); force = power / Time.fixedDeltaTime; rigBody = GetComponentInParent<Rigidbody> (); }