public override void UpdateInputAxis(float axis) { if (axis < axisOpeningThreshold) //hand is opened { isOpen = true; if (itemHeld != null) { itemHeld.ReleaseItem(); SendMessage("SetDefaultTarget", grabPoint.transform, SendMessageOptions.DontRequireReceiver); itemHeld = null; } grabPoint.SetActive(false); } else if (axis > axisClosingThreshold) //hand is closed { isOpen = false; if (itemHeld == null && currentCollectableInRange != null) { grabPoint.SetActive(true); itemHeld = currentCollectableInRange; itemHeld.rigidbody.isKinematic = true; //HACK: Keeps the held object from flying away (should drop straight down) itemHeld.transform.position = grabPoint.transform.position + transform.forward * (itemHeld.transform.localScale.x - 1); itemHeld.GrabItem(grabPoint.rigidbody); itemHeld.rigidbody.isKinematic = false; } } }
// Start is called before the first frame update void Start() { gravityObject = GetComponent <GrabbableItem>(); gravityObject.SetGravityScale(gravityObject.GetGravityScale() * -1); controller = FindObjectOfType <GameController>(); }
void OnValidate() { if (grabbableItem == null || grabbableItem.gameObject != gameObject) { grabbableItem = GetComponent <GrabbableItem>(); } }
public void SetHandClosed(float axis) { if (axis < axisOpeningThreshold) //open hand { isOpen = true; if (itemHeld != null) { itemHeld.ReleaseItem(); } grabPoint.SetActive(false); } else if (axis > axisClosingThreshold) { isOpen = false; if (currentCollectableInRange != null) { grabPoint.SetActive(true); itemHeld = currentCollectableInRange; itemHeld.rigidbody.isKinematic = true; itemHeld.transform.position = grabPoint.transform.position; itemHeld.GrabItem(grabPoint.rigidbody); itemHeld.rigidbody.isKinematic = false; } } }
void Start() { if (grabbableItem == null) { grabbableItem = GetComponent <GrabbableItem>(); } grabbableItem.OnReleased += Invoke; }
void OnTriggerStay(Collider col) { if (col.gameObject.CompareTag("Collectable")) { GrabbableItem item = col.GetComponent <GrabbableItem>(); if (item != currentCollectableInRange && item != null) { currentCollectableInRange = item; } } }
void OnTriggerExit(Collider col) { if (col.gameObject.CompareTag("Collectable")) { //Debug.LogError ("Trigger Exit"); GrabbableItem item = col.GetComponent <GrabbableItem>(); if (item == currentCollectableInRange) { currentCollectableInRange = null; } } }
static void Postfix(GrabbableItem grabbableItem) { var rb = grabbableItem.gameObject.GetComponent <Rigidbody>(); if (JobSimulatorMultiplayer.isClient && rb) { foreach (var newRb in grabbableItem.gameObject.GetComponentsInChildren <Rigidbody>()) { newRb.isKinematic = false; } rb.isKinematic = false; } }
public void SetClosestGrabbableItem(GrabbableItem item) { if (closest == item) { return; } if (closest != null) { closest.ResetItem(); } closest = item; }
void OnTriggerStay(Collider col) { if (col.gameObject.CompareTag("Collectable")) { GrabbableItem item = col.GetComponent <GrabbableItem>(); if (item != currentCollectableInRange && item != null) { if (currentCollectableInRange != null) { currentCollectableInRange.SetOutlineFeedback(false); } currentCollectableInRange = item; currentCollectableInRange.SetOutlineFeedback(true); //this is for the view to use, potentially SendMessage("SetTarget", currentCollectableInRange.transform, SendMessageOptions.DontRequireReceiver); } } }
void AddHeartsByBreaking(Vector3 position, int NumOfParticles, int force = 400) { position.y += 0.7f; if (NumOfParticles > 20) { NumOfParticles = 20; } for (int a = 0; a < NumOfParticles; a++) { SceneObject newSO = ObjectPool.instance.GetObjectForType(explotionGift.name, true); if (newSO) { newSO.Restart(position); newSO.transform.localEulerAngles = new Vector3(0, a * (360 / NumOfParticles), 0); Vector3 direction = ((newSO.transform.forward * force) + (Vector3.up * (force * 3))); newSO.GetComponent <Rigidbody>().AddForce(direction, ForceMode.Impulse); GrabbableItem gi = newSO.GetComponent <GrabbableItem> (); gi.SetGroundMaterial(); } } }
void OnAddHeartsByBreaking(Vector3 position, Material[] mat, Vector3[] pos) { int force = 400; position.y += 0.7f; int NumOfParticles = mat.Length; for (int a = 0; a < NumOfParticles; a++) { SceneObject newSO = ObjectPool.instance.GetObjectForType(explotionGift.name, true); if (newSO) { newSO.Restart(pos[a]); newSO.transform.localEulerAngles = new Vector3(0, a * (360 / NumOfParticles), 0); Vector3 direction = ((newSO.transform.forward * force) + (Vector3.up * (force * 2))); newSO.GetComponent <Rigidbody>().AddForce(direction, ForceMode.Impulse); GrabbableItem gi = newSO.GetComponent <GrabbableItem> (); gi.SetMaterial(mat[a]); } } }
private void EquipItem(GrabbableItem item) { if (equipped != null) { equipped.ResetItem(); equipped.Enable(); equipped.SetGravityScale(gameController.GetGravityDirection()); } closest = null; equipped = item; if (item == null) { return; } item.ResetItem(); item.Disable(); item.Equip(itemHolder); }
void OnTriggerExit(Collider col) { if (col.gameObject.CompareTag("Collectable")) { //Debug.LogError ("Trigger Exit"); GrabbableItem item = col.GetComponent <GrabbableItem>(); if (item == null) { return; } if (item == currentCollectableInRange) { currentCollectableInRange.SetOutlineFeedback(false); if (item != itemHeld) { SendMessage("SetDefaultTarget", grabPoint.transform, SendMessageOptions.DontRequireReceiver); } currentCollectableInRange = null; } } }
void Reset() { grabbableItem = GetComponent <GrabbableItem>(); }