예제 #1
0
 private void Grab()
 {
     if (holdingObject == null && isDown)
     {
         Ray        ray = new Ray(transform.position, -transform.up);
         RaycastHit hit = new RaycastHit();
         if (Physics.Raycast(ray, out hit, 1f))
         {
             if (hit.collider.GetComponent <PickUps>() != null)
             {
                 holdingObject   = hit.collider.GetComponent <PickUps>();
                 isHoldingObject = true;
                 float addedHeight = (EUtils.GetObjectUnitSize(holdingObject.gameObject).y / 2);
                 holdingObject.transform.position    = new Vector3(transform.position.x, transform.position.y - addedHeight, transform.position.z);
                 holdingObject.transform.parent      = this.transform;
                 holdingObject.rigidbody.isKinematic = true;
             }
         }
     }
 }
예제 #2
0
    //Jupe looks the same as MovementMount.Move but not exactly. Maybe this will be diffrent in the future ? Who knows.
    public void Move(float speed, bool auto = false, bool isHoldingObject = false)
    {
        float diffrenceZ = transform.parent.position.z + (EUtils.GetObjectUnitSize(transform.parent.gameObject).z / 2);//min and max WORLD position.

        // Debug.Log(diffrenceZ + ":" + transform.position.z);
        if (!auto)
        {
            //Just read it. It is to see if the object is out of the moving area!
            if ((transform.position.z < (diffrenceZ + minMaxAddition) && speed > 0) || (transform.position.z > -(diffrenceZ + minMaxAddition) && speed < 0))
            {
                transform.Translate(0, 0, speed * Time.deltaTime);//Moves object forward and backwards.
            }
        }
        else
        {
            //Auto
            if (isHoldingObject)
            {
                MoveToCatcher(speed);
            }
            else
            {
                GameObject nearestObject = EUtils.GetNearestObjectOfType <PickUps>(transform.position);
                if (nearestObject != null)
                {
                    Vector3 targetPosition = new Vector3(transform.position.x, transform.position.y, nearestObject.transform.position.z);
                    if (transform.position != targetPosition)
                    {
                        transform.position = Vector3.MoveTowards(transform.position, targetPosition, speed * Time.deltaTime);
                    }
                }
                else
                {
                    MoveToCatcher(speed);
                }
            }
        }
    }
예제 #3
0
    //Jupe looks the same as MovementRail.Move but not exactly. Maybe this will be diffrent in the future ? Who knows.
    public void Move(float speed, bool auto = false, bool isHoldingObject = false)
    {
        float diffrenceX = transform.parent.position.x + (EUtils.GetObjectUnitSize(transform.parent.gameObject).x / 2);//min and max WORLD position.

        if (!auto)
        {
            //For some reason localposition works better here.
            //Just read it. It is to see if the object is out of the moving area!
            if ((transform.localPosition.x < (diffrenceX + minMaxAddition) && speed > 0) || (transform.localPosition.x > -(diffrenceX + minMaxAddition) && speed < 0))
            {
                transform.Translate(speed * Time.deltaTime, 0, 0);//Move object from left to right...
            }
        }
        else
        {
            //Auto
            if (isHoldingObject)
            {
                MoveToCatcher(speed);
            }
            else
            {
                GameObject nearestObject = EUtils.GetNearestObjectOfType <PickUps>(transform.position);
                if (nearestObject != null)
                {
                    Vector3 targetPosition = new Vector3(nearestObject.transform.position.x, transform.position.y, transform.position.z);
                    if (transform.position != targetPosition)
                    {
                        transform.position = Vector3.MoveTowards(transform.position, targetPosition, speed * Time.deltaTime);
                    }
                }
                else
                {
                    MoveToCatcher(speed);
                }
            }
        }
    }