private IEnumerator RunBridge(PushableObject p_objectToMove) { p_objectToMove.m_isOnBridge = true; p_objectToMove.gameObject.layer = m_transparentLayer; float t1 = 0; while (t1 < m_bridgeMoveTime) { t1 += Time.fixedDeltaTime; float progress = t1 / m_bridgeMoveTime; Vector3 targetPosition = Vector3.Lerp(transform.position, m_otherBridge.transform.position, progress); p_objectToMove.PhysicsSeekTo(targetPosition); yield return(new WaitForFixedUpdate()); } float t2 = 0; Vector3 endTargetPos = m_otherBridge.transform.position + (Vector3.up * p_objectToMove.transform.localScale.y); while (t2 < m_endMoveTime) { t2 += Time.fixedDeltaTime; float progress = t2 / m_endMoveTime; Vector3 targetPosition = Vector3.Lerp(m_otherBridge.transform.position, endTargetPos, progress); p_objectToMove.PhysicsSeekTo(targetPosition); yield return(new WaitForFixedUpdate()); } //p_objectToMove.m_velocity = Vector3.right * 30; PushGun pushGun = p_objectToMove.gameObject.GetComponent <PushGun>(); if (pushGun == null) { p_objectToMove.gameObject.layer = m_moveableLayer; } else { p_objectToMove.gameObject.layer = 13; } //p_objectToMove.m_isOnBridge = false; }
public void PickupPushGun() { Collider[] colliders = Physics.OverlapSphere(transform.position, 3f, m_pushGunMask); if (colliders.Length > 0) { PushGun pushGunToPickup = colliders[0].GetComponent <PushGun>(); if (!pushGunToPickup.m_isBeingCarried) { pushGunToPickup.transform.position = transform.position + (Vector3.up * 1); pushGunToPickup.transform.parent = transform; m_carriedPushGun = pushGunToPickup; m_carriedPushGun.OnPickupObject(); m_isCarryingObject = true; } } }