public override void Update() { base.Update(); if (!hand) { return; } whooshEffect.SetSpeed(Mathf.InverseLerp(3, 12, dagger.rb.velocity.magnitude)); Vector3 position; Quaternion rotation; if (hand.playerHand.controlHand.usePressed) { var fistIndex = (hand.side == Side.Right) ? index : (2 - index); position = hand.Palm() + hand.ThumbDir() * 0.15f + hand.ThumbDir() * (0.4f * (fistIndex + 0.3f * hand.Velocity().magnitude)); rotation = Quaternion.LookRotation(hand.ThumbDir(), -hand.PalmDir()); } else { var angleTarget = Mathf.Clamp(60 - hand.Velocity().magnitude * 15, 15, 60); var angle = index * angleTarget - angleTarget; Vector3 offset = Quaternion.AngleAxis(angle, -Vector3.right) * (Vector3.forward * (0.2f + 0.3f * hand.Velocity().magnitude / 2)) + (-Vector3.right - Vector3.forward) * 0.3f * hand.Velocity().magnitude / 2; position = hand.transform.TransformPoint(offset); rotation = Quaternion.LookRotation(hand.PointDir(), -hand.PalmDir()); } dagger.UpdateJoint(position, rotation, 10); dagger.item.Throw(1, Item.FlyDetection.Forced); dagger.item.IgnoreRagdollCollision(Player.currentCreature.ragdoll); }
public override void Update() { base.Update(); if (effectShown) { textObject.SetActive(true); ringEffect.SetSpeed(GetHandDistanceInGs()); ringEffect.SetIntensity(GetHandDistanceInGs()); lineEffect.SetSource(Player.currentCreature.handLeft.caster.magicSource); lineEffect.SetTarget(Player.currentCreature.handRight.caster.magicSource); Player.currentCreature.mana.mergePoint.transform.rotation = GetHandsPointingQuaternion(); text.text = $"{Math.Round(GetHandDistanceInGs(), 1)}G"; textObject.transform.position = Vector3.Lerp( textObject.transform.position, Player.currentCreature.mana.mergePoint.transform.position + new Vector3(0, 0.2f, 0), Time.deltaTime * 50.0f); textObject.transform.rotation = Quaternion.LookRotation(textObject.transform.position - Player.currentCreature.animator.GetBoneTransform(HumanBodyBones.Head).position); } else { textObject.SetActive(false); } }
public void Update() { isHeld = item.mainHandler != null; isStored = item.holder != null; item.rb.useGravity = false; item.rb.velocity *= friction; if (Item.list.Where( i => i.itemId == "BlackHoleSphere" || i.itemId == "WhiteHoleSphere").Count() > 2) { DestroyOldHoles(); } if (!active) { return; } if (isHeld) { wasHeld = true; float axis = PlayerControl.GetHand(item.mainHandler.side).useAxis; effect.SetIntensity(axis); effect.SetSpeed(axis); if (type == White) { if (axis > 0) { PushOrSucc(axis); if (!hasFired) { hasFired = true; FireObject(); } } else { hasFired = false; } } else { if (axis > 0) { PushOrSucc(axis); } } } else if (isStored) { wasHeld = true; effect.SetIntensity(0); effect.SetSpeed(0); hasFired = false; } else { if (wasHeld) { wasHeld = false; lastHeldTime = Time.time; } effect.SetIntensity(1); effect.SetSpeed(1); PushOrSucc(); hasFired = false; } if (!isStored && !isHeld && storedItems.Count > 0 && type == White && Time.time - lastHeldTime > itemSpamDelay && Time.time - lastThrownItem > itemThrowDelay) { lastThrownItem = Time.time; GameObject storedObject = storedItems.Dequeue(); storedObject.SetActive(true); TriggerHeadThrow(storedObject.GetComponent <Rigidbody>()); } }