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; } } } }
//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); } } } }
//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); } } } }