private IEnumerator Collect(Transform targetTransform, Action callback) { Vector3 worldPosition = _canvasContainer.transform.TransformPoint(_rectTransform.localPosition); Vector3 startPos = targetTransform.position; Vector3 up = _rectTransform.transform.up; Vector3 baseScale = targetTransform.localScale; Vector3 pos; Vector3 yPos; float t = 0f; float size = 1f; while (t < 1f) { worldPosition = _canvasContainer.transform.TransformPoint(_rectTransform.localPosition); t = Mathf.Clamp01(t + (Time.deltaTime * speed)); size = Easing.SetOutRange(Easing.Flip(t), 0f, baseScale.x); targetTransform.localScale = new Vector3(size, size, size); pos = Vector3.Lerp(startPos, worldPosition, t); yPos = up * Easing.Arch(t) * 2f; targetTransform.position = pos + (yPos * heightMultiplicator); if (t >= 1f) { callback(); StopCoroutine(Collect(targetTransform, callback)); } yield return(null); } }
private void UpdateNote(OnNoteTimeEvent e) { float s = Easing.Arch(e.time) / 2f; noteMarker.transform.localScale = new Vector3(1f + s, 1f + s, 1f); Color col = noteMarker.color; col.a = Easing.SmoothStop(e.time, 2); noteMarker.color = col; }
private void MoveAnimation() { if (tAnimTime > 0f) { tAnim = (tAnim + Mathf.Clamp01(Time.deltaTime * (1f / tAnimTime))) % 1f; } float x = Easing.Arch(tAnim); _activePointDistance = PointDistance + (animDist * x); }
protected IEnumerator PopJumpCoroutine(Transform target) { popJumping = true; float t = 0f; Vector3 basePos = target.position; Vector3 baseScale = target.localScale; float x = 0; while (t < 1f) { t += Time.deltaTime * 2f; t = Mathf.Clamp01(t); x = Easing.Arch(t); target.position = basePos + (((popDirection * t) + (popUpDirection * x)) * 0.1f); target.localScale = new Vector3(t * baseScale.x, t * baseScale.y, t * baseScale.z); yield return(null); } popJumping = false; }
private void Update() { if (!_init) { return; } Vector3 prevPos = transform.position; transform.position += Vector3.right * (Time.deltaTime * (1f / maxXSpeed) * _direction); if (!_jumping && !_onGround) { transform.position += Vector3.down * (Time.deltaTime * _normalizedFallSpeed * maxYSpeed); } Vector3 castOrigin = transform.position + (Vector3.up * 0.25f); Vector3 directionVector = Vector3.right * _direction; if (!_leavingPortal) { portalHit = Physics2D.CircleCast(castOrigin, 0.2f, directionVector, 0f, LayerMask.GetMask(new string[] { "Portal" })); if (portalHit.collider != null && Input.GetMouseButtonDown(0)) { _leavingPortal = true; LevelManager.Instance.TeleportPlayer(portalHit.collider.GetComponent <PortalObject>()); _jumpTime = 0f; _jumping = false; return; } } else { portalHit = Physics2D.CircleCast(castOrigin, 0.5f, directionVector, 0f, LayerMask.GetMask(new string[] { "Portal" })); if (portalHit.collider == null) { _leavingPortal = false; } } bool wasOnGround = _onGround; groundHits[0] = Physics2D.Raycast(castOrigin + new Vector3(-0.125f, 0f, 0f), -Vector2.up, 0.25f, LayerMask.GetMask(new string[] { "Wall" })); groundHits[1] = Physics2D.Raycast(castOrigin + new Vector3(0.125f, 0f, 0f), -Vector2.up, 0.25f, LayerMask.GetMask(new string[] { "Wall" })); _onGround = groundHits[0] || groundHits[1]; if (!_onGround) { _normalizedFallSpeed = Mathf.Clamp(_normalizedFallSpeed + Time.deltaTime, 0.01f, 1f); } else { _normalizedFallSpeed = 0f; if (!wasOnGround) { _jumping = false; _jumpTime = 0f; if (groundHits[0].point != Vector2.zero) { transform.position = new Vector3(transform.position.x, Physics2D.Raycast(castOrigin + new Vector3(-0.125f, 0.5f, 0f), -Vector2.up, 1f, LayerMask.GetMask(new string[] { "Wall" })).point.y); } else if (groundHits[1].point != Vector2.zero) { transform.position = new Vector3(transform.position.x, Physics2D.Raycast(castOrigin + new Vector3(0.125f, 0.5f, 0f), -Vector2.up, 1f, LayerMask.GetMask(new string[] { "Wall" })).point.y); } castOrigin = transform.position + (Vector3.up * 0.25f); PlayerCamera.Instance.SnapY(transform.position.y); } } wallHit = Physics2D.Raycast(castOrigin, directionVector, 0.25f, LayerMask.GetMask(new string[] { "Wall" })); if (wallHit.collider != null) { _direction *= -1; transform.position = new Vector2(wallHit.point.x + (_direction * 0.25f), transform.position.y); } if (_jumping) { _jumpTime = Mathf.Clamp01(_jumpTime + (Time.deltaTime * (1f / maxXSpeed))); transform.position = new Vector3(transform.position.x, _jumpStartY + Easing.Arch(_jumpTime) * jumpHeight, 0f); if (_jumpTime == 1f) { _jumpTime = 0f; _jumping = false; _normalizedFallSpeed = Mathf.Clamp01((Vector3.Distance(prevPos, transform.position) / Time.deltaTime) / maxXSpeed); } } if (!_jumping && _onGround && Input.GetMouseButtonDown(0)) { _jumpStartY = transform.position.y; _jumping = true; } }