void Update() { if (grounded) { return; } float shadowOffset = shadowController.GetShadowOffset(); dropShadow.transform.position = transform.position - Vector3.up * shadowOffset; // dropShadow.transform.position += shadowVelocity * Time.deltaTime; // airTime -= Time.deltaTime; // Vector3 shadowToBox = transform.position - dropShadow.transform.position; // float heightSqr = shadowToBox.sqrMagnitude; if (Time.time > midPointTime && !shadowBox.IsTouching(boxCollider) && shadowOffset < strikeHeight) { gameObject.layer = LayerMask.NameToLayer("DynamicCollision"); } if (Time.time > strikeTime) { grounded = true; boxRB.gravityScale = 0; boxRB.drag = groundedDrag; boxRB.velocity = Vector2.zero; dropShadow.SetActive(false); } }
protected void UpdateShadow() { if (!grounded) { landingResolved = false; rb2D.gravityScale = 1.0f; rb2D.drag = 0.0f; dropShadow.SetActive(true); gameObject.layer = LayerMask.NameToLayer ("Flying"); spriteRenderer.sortingLayerName = "Flying"; float shadowOffset = shadowController.GetShadowOffset (); // set the shadow position dropShadow.transform.position = transform.position + Vector3.down * shadowOffset; // coming in for a landing if (isFalling && shadowOffset < deadlyHeight) gameObject.layer = (int)Mathf.Log (groundedResetMask, 2); } else if (!landingResolved) { landingResolved = true; OnLanding (); } UpdateRobotBeam (); }