void DisplayItems() { const float timeToPickup = .3f; int index = 0; foreach (var item in Inventory) { if (item is null) { continue; } var pos = new Vector3(index-- / 2f, 0, 0); StartCoroutine(Animator.AnimateConcurrent( new[] { Animator.MoveToWorld(item.transform, () => ItemPositionTransform.TransformPoint(pos), timeToPickup, Easing.OutQuad), Animator.RotateToWorld(item.transform, () => ItemPositionTransform.rotation * item.PlayerRotation, timeToPickup, Easing.OutQuad), }, () => { if (!Inventory.Contains(item)) { return; } item.transform.SetParent(ItemPositionTransform); item.transform.localPosition = pos; item.transform.localRotation = item.PlayerRotation; })); } }
public override void DoInteraction(Player player) { if (!(player.Inventory.CurrentItem is PhotoItem photo)) { return; } var raycast = Raycast.RaycastInteractable(player.Camera.transform, out var hit); if (!raycast) { return; } player.DropCurrentItem(); photo.Rigidbody.isKinematic = true; photo.Collider.isTrigger = true; photo.transform.SetParent(transform); StartCoroutine(Animator.AnimateConcurrent( new[] { Animator.MoveToWorld(photo.transform, hit.point, .7f, Easing.OutCubic), Animator.RotateToLocal(photo.transform, Quaternion.Euler(-90, -90, 0), .7f, Easing.OutCubic) })); }