void PlaceItems(List <Room> rooms, LevelManager level) { List <Room> roomsToChooseBetween = new List <Room> { }; foreach (Room room in rooms) { if (room != level.firstRoom && room != level.lastRoom) { roomsToChooseBetween.Add(room); } } Room chosenRoom = roomsToChooseBetween[Random.Range(0, roomsToChooseBetween.Count)]; Key theKey = Instantiate(blueprint.key, new Vector3(chosenRoom.transform.position.x + level.roomSize.x / 2, chosenRoom.transform.position.y + level.roomSize.y / 2 + 3f, chosenRoom.transform.position.z), Quaternion.identity, chosenRoom.transform); chosenRoom.myItem = theKey; chosenRoom.myItem.gameObject.SetActive(false); roomsToChooseBetween.Remove(chosenRoom); List <PickUp> pickUpProbabilityList = new List <PickUp>() { }; foreach (Blueprint.PickUpEntry pickup in blueprint.pickUps) { if (DebugManager.SpawnOnlyBalls && !pickup.item.gameObject.GetComponent <PowerUp>()) { continue; } for (int i = 0; i < (int)pickup.rarity; i++) { pickUpProbabilityList.Add(pickup.item); } } foreach (Room room in roomsToChooseBetween) { PickUp newItem = Instantiate(pickUpProbabilityList[Random.Range(0, pickUpProbabilityList.Count)], new Vector3(room.transform.position.x + level.roomSize.x / 2, room.transform.position.y + level.roomSize.y / 2, room.transform.position.z), Quaternion.identity, room.transform); room.myItem = newItem; room.myItem.gameObject.SetActive(false); if (newItem.GetComponent <PowerUp>()) { GameObject temp = Instantiate(blueprint.powerUpBalls[(int)newItem.GetComponent <PowerUp>().myType - 1], new Vector2(10000, 10000), Quaternion.identity, transform); projectiles.balls.Add(temp.GetComponent <Ball>()); temp.SetActive(false); } } }
void GrabAndDrag() { #region Grabbing and Dragging // Left Bumper picks up player when held if (Input.GetAxisRaw(pickUp) > 0 && !pickUpMode && inRange && !ragdolling) { pickUpMode = true; draggingPlayer = true; } else if (Input.GetAxisRaw(pickUp) == 0 && pickUpMode) { draggingPlayer = false; pickUpScript.join = false; Destroy(pickUpScript.GetComponent <SpringJoint>()); pickUpMode = false; } // Current Setup for picking up player if (pickUpMode && inRange && !pickUpScript.join && ClosestPlayer.GetComponentInParent <PlayerController>().ragdolling) { pickUpScript.join = false; pickUpScript.CreateJoint(); } #endregion }
private void OnPlayerFinishedMinigame(PickUp pickUpToCollect) { // Give physics back to the player rb.isKinematic = false; playerState = PlayerState.Normal; // Attach the pickup to player Debug.Log(pickUpToCollect); Debug.Log(pickUpToCollect.minigame); pickUpToCollect.minigame.EndMinigame(); heldPickup = pickUpToCollect; heldPickup.transform.parent.SetParent(transform); heldPickup.transform.parent.Translate(manager.playersDistance, 0, 0, Space.World); heldPickup.transform.parent.position += transform.up * 5f; heldPickup.GetComponent <Collider>().enabled = false; foreach (Player player in manager.players) { player.UnregisterHoveredPickUp(heldPickup); } hoveredPickUp = null; anim.SetBool("isInteracting", false); }
private void SpawnCow() { float cowSize = 0.5f; PickUp cowClone = (PickUp)Instantiate(pickupPrefab, transform.position, transform.rotation); cowClone.transform.SetParent(cowParent.transform); cowClone.transform.localPosition = new Vector3(Random.Range(-6f, 6f), cowParent.transform.position.y, 0f); cowClone.transform.localScale = new Vector3(cowSize, cowSize, 0); cowClone.GetComponent <Rigidbody2D>().velocity = new Vector2(0, Random.Range(-7, -3)); }
private void EndThrowItem() { hasThrownItem = true; givenItem.VikingDropItem(); Vector3 throwDirection = -viking.transform.forward; throwDirection.y = 0.7f; givenItem.GetComponent <Rigidbody>().velocity = MathX.RandomDirectionInCone(throwDirection, viking.itemThrowConeHalfAngle) * viking.throwStrength; }
RabboidModBase PickUptoBase(PickUp _pickUp) { if (_pickUp.GetComponent <ColorModPickUp>()) { return(_pickUp.GetComponent <ColorModPickUp>().m_colourMod); } else if (_pickUp.GetComponent <BackModPickUp>()) { return(_pickUp.GetComponent <BackModPickUp>().m_bodyPart); } else if (_pickUp.GetComponent <MouthModPickUp>()) { return(_pickUp.GetComponent <MouthModPickUp>().m_mouthMod); } else if (_pickUp.GetComponent <SizeModPickUp>()) { return(_pickUp.GetComponent <SizeModPickUp>().m_sizeMod); } else { Debug.Log("SCREAMING"); return(null); } }
void SpawnShuttleParts(Planet planet) { currentPickups = 0; //initialize mesh (Denis stuff) //Place Pickups //Place shuttle //initialize planet variables // Place shuttle /*RaycastHit hit; * Vector3 dir = Random.insideUnitCircle.normalized; * dir.z = dir.x; * dir.x = 0; * if (Physics.Raycast(planet.transform.position, dir, out hit, Mathf.Infinity, layerMask)) * {*/ int value = shuttle.shuttleParts.Count; var fire = shuttle.fireParticleSystem.main; fire.startLifetime = 5.0f * value; var smoke = shuttle.smokeParticleSystem.main; smoke.startLifetime = 5.0f * value; shuttle.transform.position = planet.crashPoint; shuttle.transform.rotation = Quaternion.identity; shuttle.gameObject.transform.LookAt(planet.transform.position, Vector3.Cross(planet.transform.up, (planet.transform.position - shuttle.gameObject.transform.position).normalized)); shuttle.transform.Translate(shuttleObjectsDistance, 0, 0, Space.World); //} planet.Init(-9.7f); List <Vector3> pickupPositions = new List <Vector3>(); pickupPositions.Add(new Vector3(shuttle.transform.position.x, shuttle.transform.position.y, shuttle.transform.position.z)); int placingTry = 0; int maxIterations = 5; RaycastHit hit; int layerMask = 1 << 10; for (int i = 0; i < shuttle.shuttleParts.Count; i++) { RaycastHit partPlanetHit; Vector3 dir = Random.insideUnitCircle.normalized; dir.z = dir.x; dir.x = 0; //hits ONLY planet layerMask = 1 << 10; //this sucks!! Physics.Raycast(planet.transform.position, dir, out partPlanetHit, Mathf.Infinity, layerMask); float planetCircumference = 2 * partPlanetHit.distance * Mathf.PI; float placingDistance = planetCircumference / ((float)shuttle.shuttleParts.Count * 2); placingTry = 0; while (placingTry < maxIterations) { dir = Random.insideUnitCircle.normalized; dir.z = dir.x; dir.x = 0; bool canPlace = true; if (Physics.Raycast(planet.transform.position, dir, out partPlanetHit, Mathf.Infinity, layerMask)) { for (int p = 0; p < pickupPositions.Count; p++) { if (Vector3.Distance(pickupPositions[p], partPlanetHit.point) < placingDistance) { //is too close: jump back to while and increase placing try placingTry++; canPlace = false; p = pickupPositions.Count; } } } if (canPlace) { placingTry = maxIterations; } } Debug.DrawRay(planet.transform.position, dir * 500, Color.yellow, 60); placingTry = 0; // Instantiate the part GameObject shuttlePart = shuttle.shuttleParts[i]; Transform spawnTransform = shuttlePart.transform.Find("Spawnpoint"); PickUp pickUp = spawnTransform.gameObject.AddComponent <PickUp>(); int index = new int(); index = i; pickUp.index = index; shuttlePart.transform.SetParent(null); shuttlePart.transform.localScale = Vector3.one * partScaleFactor; pickUp.GetComponent <Collider>().enabled = true; Vector3 up = partPlanetHit.point - planet.transform.position; Quaternion lookRotation = Quaternion.LookRotation(new Vector3(-1, 0, 0), up); Quaternion offsetRotation = lookRotation * Quaternion.Inverse(spawnTransform.rotation); shuttlePart.transform.rotation = offsetRotation * shuttlePart.transform.rotation; Vector3 offsetPosition = partPlanetHit.point - spawnTransform.position; shuttlePart.transform.position += offsetPosition; shuttlePart.transform.Translate(shuttleObjectsDistance, 0, 0, Space.World); pickupPositions.Add(new Vector3(shuttlePart.transform.position.x, shuttlePart.transform.position.y, shuttlePart.transform.position.z)); } StartCoroutine(SpawnPrefabForTime(impactParticleSystem, shuttle.transform.position, shuttle.transform.rotation)); }