public virtual bool Diposide(PickableObject pickableObject) { return(false); }
private void AddToInventory(PickableObject obj) { _objectsInInventory.Add(obj); Debug.Log("Added : " + obj.objectName + " to inventory."); }
private void RemoveFromInventory(PickableObject obj) { _objectsInInventory.Remove(obj); Debug.Log("Removed : " + obj.objectName + " from inventory."); }
// Use this for initialization void Start() { Player = GameObject.FindWithTag("Player").GetComponent <PickableObject>(); }
public static void NotifyItemPick(PickableObject pickedItem) { OnItemPick?.Invoke(pickedItem); }
void PickedupObject() { ray = new Ray(transform.position - (transform.forward * 1),transform.forward); if(Physics.SphereCast(ray,0.1f,out hit,pickDistance)) { PickableObject objectPickedUp = hit.collider.gameObject.GetComponent<PickableObject>(); if(objectPickedUp != null) { currentPickedItem = objectPickedUp; currentPickedItem.PickUp(transform); } } }
void FixedUpdate() { if (!debug) { var device = SteamVR_Controller.Input((int)trackedObj.index); if (device.GetTouchDown(SteamVR_Controller.ButtonMask.Trigger)) { if (currentPickedItem != null && currentPickedItem.isUsable) { if (currentPickedItem.useHaptics) { UseHaptics ((ushort)currentPickedItem.hapticsForce); } currentPickedItem.SendMessage("Use", SendMessageOptions.DontRequireReceiver); } else { PickedupObject(); } Debug.DrawRay(transform.position, transform.forward * pickDistance); } else if (device.GetTouchUp((SteamVR_Controller.ButtonMask.Trigger))) { if (currentPickedItem != null) { if (!currentPickedItem.isUsable) { if (currentPickedItem.pickerID == this.gameObject.GetInstanceID()) { currentPickedItem.Drop(); if (currentPickedItem.myRigidBody) { currentPickedItem.GetComponent<Rigidbody>(); var origin = trackedObj.origin ? trackedObj.origin : trackedObj.transform.parent; if (origin != null) { currentPickedItem.myRigidBody.velocity = origin.TransformVector(device.velocity); currentPickedItem.myRigidBody.angularVelocity = origin.TransformVector(device.angularVelocity); } else { currentPickedItem.myRigidBody.velocity = device.velocity; currentPickedItem.myRigidBody.angularVelocity = device.angularVelocity; } currentPickedItem.myRigidBody.maxAngularVelocity = currentPickedItem.myRigidBody.angularVelocity.magnitude; } } } } } else if (device.GetTouchUp((SteamVR_Controller.ButtonMask.Grip))) { if (currentPickedItem != null) { if (currentPickedItem.isUsable) { currentPickedItem.Drop(); if (currentPickedItem.myRigidBody) { currentPickedItem.GetComponent<Rigidbody>(); var origin = trackedObj.origin ? trackedObj.origin : trackedObj.transform.parent; if (origin != null) { currentPickedItem.myRigidBody.velocity = origin.TransformVector(device.velocity); currentPickedItem.myRigidBody.angularVelocity = origin.TransformVector(device.angularVelocity); } else { currentPickedItem.myRigidBody.velocity = device.velocity; currentPickedItem.myRigidBody.angularVelocity = device.angularVelocity; } currentPickedItem.myRigidBody.maxAngularVelocity = currentPickedItem.myRigidBody.angularVelocity.magnitude; } currentPickedItem = null; } } } } }
void PutObjectOnHand() { if( CurrentFloor.Pickable != null ) { Sounds.PlaySound(ESoundType.PickUp); CurrentlyPickedUpObject = CurrentFloor.Pickable; currentItem.color = new Color( currentItem.color.r, currentItem.color.g, currentItem.color.b, 1.0f ); currentItem.sprite = CurrentlyPickedUpObject.GetComponentInChildren<SpriteRenderer>().sprite; CurrentlyPickedUpObject.transform.localPosition = Vector3.forward * Z_BEHIND_BUILDING; CurrentFloor.Pickable = null; itemContainerAnimation.Play(); } }
void RemoveObjectOfHand() { CurrentlyPickedUpObject = null; currentItem.color = new Color( currentItem.color.r, currentItem.color.g, currentItem.color.b, 0.0f ); currentItem.sprite = null; itemContainerAnimation.Stop(); }
public bool OnPickObject(PickableObject canPick, bool end) { if (!isPlayer) { return(false); } bool result = false; if (!canPick.instant) { if (end) { hoveredObject = null; result = false; } else { hoveredObject = canPick; result = false; } } else if (!end) { PickableRestore restore = (PickableRestore)canPick.toPick; if (restore) { if (restore.pickableType == PickableRestore.Type.Ammo) { if (equipement.weapon != null) { if (equipement.weapon.load < equipement.weapon.capacity) { equipement.weapon.load = equipement.weapon.capacity; result = true; } } } else if (restore.pickableType == PickableRestore.Type.HP) { if (hp < maxHp) { hp = maxHp; result = true; } } else if (equipement.secondaryWeapon != null && restore.pickableType == PickableRestore.Type.Energy) { if (equipement.secondaryWeapon.load < equipement.secondaryWeapon.capacity) { equipement.secondaryWeapon.load = equipement.secondaryWeapon.capacity; equipement.secondaryWeapon.overheat = false; result = true; } } else if (restore.pickableType == PickableRestore.Type.Data) { points++; result = true; } if (result) { if (restore.audioclip != null) { this.audioSource.PlayOneShot(restore.audioclip); } } } } return(result); }
void PutObjectOnFloor( PickableObject pickable, Floor floor ) { Sounds.PlaySound(ESoundType.Drop); floor.Pickable = pickable; pickable.transform.SetParent( floor.transform ); pickable.transform.localPosition = Vector3.zero; }
public void GrabObject(PickableObject o) { objectsToGrab.Add(o); }
// Update is called once per frame void Update() { if (!_showArrow && !_showFlash) { _timer += Time.deltaTime; } if (_objCount != 0) { if (_timer >= _timeToHintSeconds) { _timer = 0.0f; _closestPickable = GetClosestPickableObject(); if (_closestPickable != null) { if (IsPickableInFlashArea(_closestPickable)) { _showFlash = true; _flashHelper = 0.0f; _flash.gameObject.SetActive(true); } else { _showArrow = true; _arrow.gameObject.SetActive(true); } } } if (_showFlash) { float boom = Mathf.Sin(_flashHelper); _flashHelper += Time.deltaTime; Vector2 pos = Camera.main.WorldToScreenPoint(_closestPickable.transform.position); _flash.rectTransform.position = pos; _flash.GetComponent <CanvasGroup>().alpha = boom; if (_flashHelper > _flashPhases * 2.0f * Mathf.PI) { Debug.Log("FLUSH"); Flush(); } } if (_showArrow) { Vector2 pWorldPos = _closestPickable.transform.position; Vector2 pScreenPos = Camera.main.WorldToScreenPoint(pWorldPos); Vector2 middle = new Vector2((float)Screen.width * 0.5f, (float)Screen.height * 0.5f); Vector2 dir = (pScreenPos - middle); dir.Normalize(); float angle = Mathf.Rad2Deg * (Mathf.Atan2(dir.y, dir.x) - Mathf.Atan2(Vector2.up.y, Vector2.up.x)); _arrow.transform.localRotation = Quaternion.Euler(0.0f, 0.0f, angle); _flashShowRect = _hintArea.rectTransform.rect; float xOffset = _arrow.rectTransform.rect.width * 0.5f; float yOffset = _arrow.rectTransform.rect.height * 0.5f; float chuj = -(float)_hintArea.canvas.pixelRect.width / _hintArea.canvas.scaleFactor * 0.5f; float dupa = -(float)_hintArea.canvas.pixelRect.height / _hintArea.canvas.scaleFactor * 0.5f; pScreenPos.x = Mathf.Min(Mathf.Max(pScreenPos.x, (_flashShowRect.xMin - chuj) + xOffset), _flashShowRect.xMax - chuj - xOffset); pScreenPos.y = Mathf.Min(Mathf.Max(pScreenPos.y, (_flashShowRect.yMin - dupa) + yOffset), _flashShowRect.yMax - dupa - yOffset); _arrow.rectTransform.position = pScreenPos; if (IsPickableInFlashArea(_closestPickable)) { _showArrow = false; _arrow.gameObject.SetActive(false); _showFlash = true; _flashHelper = 0.0f; _flash.gameObject.SetActive(true); } } } }
private bool IsPickableInFlashArea(PickableObject po) { Vector2 pos = Camera.main.WorldToScreenPoint(po.transform.position); return(RectTransformUtility.RectangleContainsScreenPoint(_hintArea.rectTransform, pos)); }
public void SetPanelSettings(PickableObject input) { _objectName.text = input.Name; _objectDescription.text = input.Description; _objectEffect.text = input.Effect; }
public void AddObjectToList(PickableObject obj, float lagSeconds) { StartCoroutine(AddObjectToListCoroutine(obj, lagSeconds)); }
public void UseObjectOn(PickableObject pickable) { RevealTraumaDescription (); }
public void SetObjectInSlot(PickableObject newObject) => objectInSlot = newObject;
void Update() { if (debug) { if (Input.GetMouseButtonDown(0)) { if (currentPickedItem != null && currentPickedItem.isUsable) { currentPickedItem.SendMessage("Use", SendMessageOptions.DontRequireReceiver); } else { PickedupObject(); } Debug.DrawRay(transform.position, transform.forward * pickDistance); } else if (Input.GetMouseButtonUp(0)) { if (currentPickedItem != null) { if (!currentPickedItem.isUsable) { if (currentPickedItem.pickerID == this.gameObject.GetInstanceID()) { currentPickedItem.Drop(); } } } } else if (Input.GetMouseButtonUp(1)) { if (currentPickedItem != null) { if (currentPickedItem.isUsable) { currentPickedItem.Drop(); } } currentPickedItem = null; } else if(Input.GetMouseButtonUp(2)) { if (currentPickedItem != null) { if (currentPickedItem.isUsable) { currentPickedItem.Drop(); } } currentPickedItem = null; } } }
private void Update() { float move = rewiredPlayer.GetAxis(RewiredConsts.Action.Move) * maxSpeed; if (move * move > 0.04f) { animator.SetBool("isWalking", true); spriteContainer.transform.localScale = new Vector3(move >= 0 ? 1f : -1f, 1f, 1f); if (jumpingObject.jumpSensor.isOnGround) { rigidbody2D.MovePosition(transform.position + Vector3.right * (move * maxSpeed * Time.fixedDeltaTime)); } if (!isGameOver && Mathf.Abs(move) > tooFastThreshold) { if (jumpingObject.jumpSensor.isOnGround) { TooFast?.Invoke(Mathf.Abs(move) / maxSpeed - tooFastThreshold); if (!stompClouds.isPlaying) { stompClouds.Play(); } } } else { NormalSpeed?.Invoke(); if (stompClouds.isPlaying) { stompClouds.Stop(); } } } else { animator.SetBool("isWalking", false); } float leftGrasp = rewiredPlayer.GetAxis(RewiredConsts.Action.Grab_Left); float rightGrasp = rewiredPlayer.GetAxis(RewiredConsts.Action.Grab_Right); if (leftGrasp > 0 && rightGrasp > 0 && Mathf.Abs(leftGrasp - rightGrasp) < minGraspDifferenceBetweenHands) { appliedStrength = leftGrasp + rightGrasp; } else { appliedStrength = 0; } animator.SetFloat("eyes", appliedStrength / 2f); if (!isHoldingSomething) { var triggers = Physics2D.CircleCastAll(transform.position, searchingRadius, Vector2.up, 1f); PickableTrigger closestTrigger = null; float minDistance = 100f; globalPiecesController.TurnOffHighlights(); foreach (var trigger in triggers) { if (trigger.collider.gameObject.layer == LayerMask.NameToLayer("BuildPieceSelfCollision")) { var distance = Vector2.Distance(trigger.collider.gameObject.transform.position, transform.position); var t = trigger.collider.gameObject.GetComponent <PickableTrigger>(); if (t != null && t.CanBePicked() && distance < minDistance) { minDistance = distance; closestTrigger = trigger.collider.gameObject.GetComponent <PickableTrigger>(); } } } if (closestTrigger != null) { possiblePick = closestTrigger.GetPickableObject().gameObject; closestTrigger.GetPickableObject().Highlight(true); (Transform, Transform)graspPoints = closestTrigger.GetGraspPoints(); leftHandCustomRestOffset = armsContainer.transform.worldToLocalMatrix * (new Vector3(graspPoints.Item1.localPosition.x, leftHandDefaultOffset.y, 0)); rightHandCustomRestOffset = armsContainer.transform.worldToLocalMatrix * (new Vector3(graspPoints.Item2.localPosition.x, leftHandDefaultOffset.y, 0)); } else { possiblePick = null; leftHandCustomRestOffset = leftHandDefaultOffset; rightHandCustomRestOffset = rightHandDefaultOffset; } desiredLeftHandLocalPosition = leftHandCustomRestOffset; desiredRightHandLocalPosition = rightHandCustomRestOffset; if (appliedStrength > minGraspStrength && arms.CanGrasp && possiblePick != null) { leftHandSprite.sortingOrder = graspingLayer; rightHandSprite.sortingOrder = graspingLayer; pickedObject = possiblePick.GetComponent <PickableObject>(); pickedObject.Grabbed(); isHoldingSomething = true; } else { //leftHand.transform.localPosition = leftHandCustomRestOffset; //rightHand.transform.localPosition = rightHandCustomRestOffset; leftHandSprite.sortingOrder = restingLayer; rightHandSprite.sortingOrder = restingLayer; isHoldingSomething = false; } leftHand.transform.localPosition = leftHandCustomRestOffset + Vector3.right * (graspMovementBias * leftGrasp); rightHand.transform.localPosition = rightHandCustomRestOffset + Vector3.left * (graspMovementBias * rightGrasp); } leftHand.transform.localPosition = Vector3.Lerp(leftHand.transform.localPosition, desiredLeftHandLocalPosition, 0.6f); rightHand.transform.localPosition = Vector3.Lerp(rightHand.transform.localPosition, desiredRightHandLocalPosition, 0.6f); if (isHoldingSomething) { pickedObject.transform.position = armsContainer.transform.position; pickedObject.ApplyGrasp(appliedStrength, graspDamage); if (pickedObject.health == 0) { Drop(); } } if (isHoldingSomething && appliedStrength < Mathf.Max(minGraspStrength - 0.2f, 0f)) { Drop(); } float armsAxis = rewiredPlayer.GetAxis(RewiredConsts.Action.Lift); armsContainer.transform.localPosition = armsDefaultPosition + Vector3.up * (armsAxis * armsMovementBias); }
protected virtual void Awake() { _instanceGuid = System.Guid.NewGuid().ToString(); Environment.GetInstance().AddInstance(this); _pickableObject = gameObject.GetOrAddComponent<PickableObject>(); }
// Start is called before the first frame update void Start() { po = this.gameObject.GetComponent <PickableObject>(); }