// Update is called once per frame void Update() { if (monstersIsAttacking.Count == 0) { Vector2 position = transform.position; Vector2 positionTarget = Vector2.zero; //Limit camera X if ((position.x - sizeBox.x >= Position_BottomLeft.x || (target.position.x - position.x) > 0) && (position.x + sizeBox.x <= Position_BottomLeft.x + sizeAera.x || (target.position.x - position.x) < 0)) { positionTarget = new Vector2(target.position.x, 0); position = new Vector2(positionTarget.x, position.y); transform.position = (Vector3)position - Vector3.forward * 10; } //Limit camera Y if ((position.y - sizeBox.y >= Position_BottomLeft.y || (target.position.y - position.y) > 0) && (position.y + sizeBox.y <= Position_BottomLeft.y + sizeAera.y || (target.position.y - position.y) < 0)) { positionTarget = new Vector2(0, target.position.y); transform.position = new Vector3(position.x, positionTarget.y, -10); } } else { switch (state) { case stateCamera.Find: newPositionCamera = Vector2.zero; int i = 0; foreach (var monsterIsAttacking in monstersIsAttacking) { newPositionCamera += Vector2.Lerp(target.position, monsterIsAttacking.position, 0.5f); i++; } newPositionCamera /= i; state = stateCamera.MoveTo; break; case stateCamera.MoveTo: Vector3 position = transform.position; transform.position = Vector3.Lerp(position, (Vector3)newPositionCamera - (Vector3.forward * 10), smoothSpeed); //Debug.Log((newPositionCamera - (Vector2)position).magnitude); if ((newPositionCamera - (Vector2)position).magnitude <= smoothSpeed) { state = stateCamera.Find; } break; } } }
// Update is called once per frame void Update() { if (target != null) { if (attackingFoes.Count == 0) { Vector2 position = transform.position; Vector2 positionTarget = Vector2.zero; //Limit camera X if ((position.x - sizeBox.x >= bottomLeftPosition.x || (target.position.x - position.x) > 0) && (position.x + sizeBox.x <= bottomLeftPosition.x + (parameters.mapSizeX * parameters.cellSize.x) || (target.position.x - position.x) < 0)) { positionTarget = new Vector2(target.position.x, 0); position = new Vector2(positionTarget.x, position.y); transform.position = (Vector3)position - Vector3.forward * 10; } //Limit camera Y if ((position.y - sizeBox.y >= bottomLeftPosition.y || (target.position.y - position.y) > 0) && (position.y + sizeBox.y <= bottomLeftPosition.y + (parameters.mapSizeY * parameters.cellSize.y) || (target.position.y - position.y) < 0)) { positionTarget = new Vector2(0, target.position.y); transform.position = new Vector3(position.x, positionTarget.y, -10); } } else { Vector2 newPositionCamera = Vector2.zero; switch (state) { case stateCamera.Find: int i = 0; foreach (var monsterIsAttacking in attackingFoes) { newPositionCamera += Vector2.Lerp(target.position, monsterIsAttacking.position, 0.5f); i++; } newPositionCamera /= i; state = stateCamera.MoveTo; break; case stateCamera.MoveTo: Vector3 position = transform.position; transform.position = Vector3.Lerp(position, (Vector3)newPositionCamera - (Vector3.forward * 10), smoothSpeed); if ((newPositionCamera - (Vector2)position).magnitude <= smoothSpeed) { state = stateCamera.Find; } break; } } if (screenShake) { if (shakeDuration > 0) { transform.localPosition += Random.insideUnitSphere * shakeMagnitude; shakeDuration -= Time.deltaTime * dampingSpeed; } else { screenShake = false; shakeDuration = 0f; } } } }