示例#1
0
    void UpdateMoveScrewdriverUp()
    {
        if (interpolate)
        {
            float t = timer / screwdriverUpInterpolateSeconds;
            guide1.transform.localPosition = Vector3.Lerp(fromPosition1, toPosition1, t);
            guide2.transform.localPosition = Vector3.Lerp(fromPosition2, toPosition2, t);

            if (timer >= screwdriverUpInterpolateSeconds)
            {
                interpolate = false;
                timer       = 0.0f;
                objectController.GetComponent <Rigidbody>().isKinematic = false;
                objectBehaviour.transform.gameObject.GetComponent <Rigidbody>().constraints = RigidbodyConstraints.FreezePositionZ | RigidbodyConstraints.FreezeRotationX | RigidbodyConstraints.FreezeRotationY | RigidbodyConstraints.FreezeRotationZ;
                gameState     = GameState.moveObjectSide;
                audioSrc.clip = audioClip;
                audioSrc.Play();
            }
            else
            {
                timer += Time.deltaTime;
            }
        }
        else
        {
            fromPosition1 = guide1.transform.localPosition;
            toPosition1   = new Vector3(guide1.transform.localPosition.x, 2.3f, guide1.transform.localPosition.z);
            fromPosition2 = guide2.transform.localPosition;
            toPosition2   = new Vector3(guide2.transform.localPosition.x, 2.3f, guide2.transform.localPosition.z);
            timer         = 0.0f;
            interpolate   = true;
        }
    }
示例#2
0
    // Add offset to be able to use Raycast from FP-View or add logic to ObjectController to use Raycast
    void MoveObject()
    {
        RaycastHit hit;
        Ray        mousePointer = FPCam.ScreenPointToRay(Input.mousePosition);

        if (objectGrabbed != null && hasObject)
        {
            objectGrabbed.transform.position         = FPCam.transform.position + FPCam.transform.forward * objectSize;
            objectGrabbed.transform.localEulerAngles = orientation.transform.localEulerAngles;
            GroundControl();
        }
        else
        {
            if (Input.GetMouseButtonDown(0))
            {
                if (Physics.Raycast(mousePointer, out hit))
                {
                    if (hit.transform.gameObject.GetComponent <ObjectController>() != null)
                    {
                        objectGrabbed        = hit.transform.gameObject.GetComponent <ObjectController>();
                        objectSize           = objectGrabbed.GetComponent <Renderer>().bounds.size.magnitude;
                        hasObject            = true;
                        objectGrabbed.placed = false;
                        objectGrabbed.GetComponent <Rigidbody>().useGravity = false;
                        if (inGrid)
                        {
                            objectGrabbed.inGrid = true;
                        }
                    }
                }
            }
        }
    }
示例#3
0
 void OnCollisionEnter2D(Collision2D collision)
 {
     if (ObjectController.GetComponent <ObjectController>().IsChild(collision.transform) == false)
     {
         transform.parent.gameObject.SendMessage("OnCollisionEnter2D", collision);
     }
 }
示例#4
0
    public void Grab(ObjectController gameObj)                                                                                                          //Should only be called if isHoldingSomething is false
    {
        this.transform.LookAt(gameObj.transform);
        currentlyEquippedItem = gameObj;
        Destroy(gameObj.GetComponent <Rigidbody>());

        gameObj.transform.SetParent(this.transform);
        gameObj.transform.localPosition = new Vector3(0.16f, -0.21f, 0.65f);
        gameObj.transform.localRotation = Quaternion.Euler(-3.9f, -94.16f, -0.125f);


        isHoldingObject = true;
    }
示例#5
0
    // 2nd Iteration

    /*
     * TODO :
     * Use boxraycast from selected object to check surroundings, adjust to surroundings appropriately (optional, turn rigidbody off while
     *          in selection mode to ensure no collision between objects and get funky interactions)
     * Check on release there is no overlapping (use physics compute penetration)
     *
     */


    private void Update()
    {
        if (objectGrabbed != null)
        {
            isGrounded = Physics.CheckBox(objectGrabbed.transform.position, new Vector3(objectGrabbed.GetComponent <Renderer>().bounds.size.x, objectGrabbed.GetComponent <Renderer>().bounds.size.y, objectGrabbed.GetComponent <Renderer>().bounds.size.z));
        }

        MoveObject();

        if (Input.GetMouseButtonDown(1))
        {
            objectGrabbed = null;
            hasObject     = false;
        }
    }