コード例 #1
0
 public virtual bool Diposide(PickableObject pickableObject)
 {
     return(false);
 }
コード例 #2
0
 private void AddToInventory(PickableObject obj)
 {
     _objectsInInventory.Add(obj);
     Debug.Log("Added : " + obj.objectName + " to inventory.");
 }
コード例 #3
0
 private void RemoveFromInventory(PickableObject obj)
 {
     _objectsInInventory.Remove(obj);
     Debug.Log("Removed : " + obj.objectName + " from inventory.");
 }
コード例 #4
0
 // Use this for initialization
 void Start()
 {
     Player = GameObject.FindWithTag("Player").GetComponent <PickableObject>();
 }
コード例 #5
0
 public static void NotifyItemPick(PickableObject pickedItem)
 {
     OnItemPick?.Invoke(pickedItem);
 }
コード例 #6
0
ファイル: ObjectPicker.cs プロジェクト: toth3max/PodVR
	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);

			}
		}
	}
コード例 #7
0
ファイル: ObjectPicker.cs プロジェクト: toth3max/PodVR
	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;
                    }
                }
            }
        }

	}
コード例 #8
0
    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();
        }
    }
コード例 #9
0
 void RemoveObjectOfHand()
 {
     CurrentlyPickedUpObject = null;
     currentItem.color = new Color( currentItem.color.r, currentItem.color.g, currentItem.color.b, 0.0f );
     currentItem.sprite = null;
     itemContainerAnimation.Stop();
 }
コード例 #10
0
    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);
    }
コード例 #11
0
    void PutObjectOnFloor( PickableObject pickable, Floor floor )
    {
        Sounds.PlaySound(ESoundType.Drop);

        floor.Pickable = pickable;
        pickable.transform.SetParent( floor.transform );
        pickable.transform.localPosition = Vector3.zero;
    }
コード例 #12
0
ファイル: Spaceship.cs プロジェクト: Surue/HOY-GGG2019-
 public void GrabObject(PickableObject o)
 {
     objectsToGrab.Add(o);
 }
コード例 #13
0
    // 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);
                }
            }
        }
    }
コード例 #14
0
    private bool IsPickableInFlashArea(PickableObject po)
    {
        Vector2 pos = Camera.main.WorldToScreenPoint(po.transform.position);

        return(RectTransformUtility.RectangleContainsScreenPoint(_hintArea.rectTransform, pos));
    }
コード例 #15
0
 public void SetPanelSettings(PickableObject input)
 {
     _objectName.text        = input.Name;
     _objectDescription.text = input.Description;
     _objectEffect.text      = input.Effect;
 }
コード例 #16
0
 public void AddObjectToList(PickableObject obj, float lagSeconds)
 {
     StartCoroutine(AddObjectToListCoroutine(obj, lagSeconds));
 }
コード例 #17
0
 public void UseObjectOn(PickableObject pickable)
 {
     RevealTraumaDescription ();
 }
コード例 #18
0
 public void SetObjectInSlot(PickableObject newObject) => objectInSlot = newObject;
コード例 #19
0
ファイル: ObjectPicker.cs プロジェクト: toth3max/PodVR
    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;
            }
        }
    }
コード例 #20
0
    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);
    }
コード例 #21
0
ファイル: PrefabInstance.cs プロジェクト: Bohofx/ICS
    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>();
    }