public GameObject ResetBall() { DestroyAllBalls(); return(WadeUtils.Instantiate(ballPrefab)); }
void OnMouseDrag() { if (_activeInputLens != null) { Vector2 screenMin = Vector2.zero; Vector2 screenMax = new Vector2(Screen.width, Screen.height); Vector3 mousePos = ((Vector3)WadeUtils.Clamp((Vector2)Input.mousePosition, screenMin, screenMax)).SetZ(Input.mousePosition.z); Vector2 screenBoundDiff = screenMax - screenMin; screenMin += screenBoundDiff * 0.001f; screenMax -= screenBoundDiff * 0.001f; mousePos = ((Vector3)WadeUtils.Clamp((Vector2)mousePos, screenMin, screenMax)).SetZ(mousePos.z); Vector3 worldPos = Camera.main.ScreenToWorldPoint(mousePos); Vector3 rotatePivotOffset = _rotatePivot.position - transform.position; transform.position = worldPos + Camera.main.transform.forward * _selectedCamOffset - rotatePivotOffset; bool uiOverlap = RectTransformUtility.RectangleContainsScreenPoint(GetBreed().GetBreedRect(), mousePos, Camera.main); if (uiOverlap != _prevUIOverlap) { if (_changeScaleRoutine != null) { StopCoroutine(_changeScaleRoutine); } _changeScaleRoutine = StartCoroutine(ChangeScaleRoutine(uiOverlap)); _groundShadow.GetShadow().gameObject.SetActive(!uiOverlap); _prevUIOverlap = uiOverlap; } if (!uiOverlap) { if (Physics.Raycast(worldPos, Camera.main.transform.forward - Camera.main.transform.up * 0.17f, out _hitInfo, Mathf.Infinity, _planetLayer, QueryTriggerInteraction.Ignore)) { _groundShadow.SetPos(_hitInfo.point); } } bool leftOverlap = RectTransformUtility.RectangleContainsScreenPoint(GetBreed().GetLeftRotateRect(), mousePos, Camera.main); if (leftOverlap != _prevLeftOverlap) { if (leftOverlap) { GameSounds.PostEvent2D(GameSound.SFX_BlockRotateCounterClockwise); if (_rotateRoutine != null) { StopCoroutine(_rotateRoutine); } _rotateRoutine = StartCoroutine(RotateRoutine(false)); } _prevLeftOverlap = leftOverlap; } bool rightOverlap = RectTransformUtility.RectangleContainsScreenPoint(GetBreed().GetRightRotateRect(), mousePos, Camera.main); if (rightOverlap != _prevRightOverlap) { if (rightOverlap) { GameSounds.PostEvent2D(GameSound.SFX_BlockRotateClockwise); if (_rotateRoutine != null) { StopCoroutine(_rotateRoutine); } _rotateRoutine = StartCoroutine(RotateRoutine(true)); } _prevRightOverlap = rightOverlap; } _spriteToSlotMap.Clear(); List <BitSlotWidget> bitSlots = GetBreed().GetBitSlots(); for (int i = 0; i < bitSlots.Count; i++) { bitSlots[i].SetHighlight(false); } for (int i = 0; i < _bitSprites.Length; i++) { SpriteRenderer bitSprite = _bitSprites[i]; Vector3 spriteViewPos = Camera.main.WorldToViewportPoint(bitSprite.transform.position); for (int j = 0; j < bitSlots.Count; j++) { BitSlotWidget bitSlot = bitSlots[j]; if (!bitSlot.used) { Vector3 slotViewPos = Camera.main.WorldToViewportPoint(bitSlot.transform.position); if (Vector2.Distance(spriteViewPos, slotViewPos) < _gridSlotMaxDist) { // Temp-mark used so slots are distinct bitSlot.used = true; bitSlot.SetHighlight(true); _spriteToSlotMap.Add(bitSprite, bitSlot); break; } } } } // Unmark temp-used slots foreach (var kvp in _spriteToSlotMap) { kvp.Value.used = false; } ResetFadeoutTimer(); } }
public Color HSVToRGB() { return(WadeUtils.HSVToRGB(this)); }
public Vector4 Clamp(Vector4 v) { return(WadeUtils.Clamp(v, min, max)); }
IEnumerator PukeEffects(bool spawnBall) { isPuking = true; pukeTimer = 0.0f; bool ballSpawned = !spawnBall; Vector3 initMouthScale = mouth.localScale; GameObject pukeEffectObj = WadeUtils.Instantiate(pukeEffectPrefab, transform.position, transform.rotation); mouth.GetComponent <SpriteRenderer>().sprite = openSprite; GetComponent <Rigidbody2D>().velocity = Vector3.zero; for (int i = 0; i < segments.Length; i++) { segments[i].GetComponent <Rigidbody2D>().velocity = Vector3.zero; } while (pukeTimer < pukeTime) { if (pukeEffectObj) { pukeEffectObj.transform.position = mouth.position; pukeEffectObj.transform.rotation = transform.rotation; pukeEffectObj.transform.localRotation *= Quaternion.Euler(-90.0f, 0.0f, 0.0f); } if (pukeTimer > pukeTimer / 10.0f) { mouth.localScale = new Vector3(1.0f + Mathf.Cos(pukeTimer * 20.0f) / 2.0f, mouth.localScale.y, mouth.localScale.z); } if (pukeTimer > pukeTimer / 3.0f) { if (!ballSpawned) { GameObject ballObj = WadeUtils.Instantiate(ballPrefab, transform.position + transform.up, transform.rotation); ballObj.layer = LayerMask.NameToLayer("IgnorePlayer"); ballObj.GetComponent <Rigidbody2D>().AddForce(transform.up * pukeForce * 100); ballObj.GetComponent <Rigidbody2D>().AddTorque(pukeForce * 0.01f); Ball ball = ballObj.GetComponent <Ball>(); ball.StartCoroutine(ball.ScaleUp(0.0f)); ballSpawned = true; } else { GetComponent <Rigidbody2D>().AddForce(-transform.up * pukeForce * (1.0f - pukeTimer / pukeTime)); for (int i = 0; i < segments.Length; i++) { segments[i].GetComponent <Rigidbody2D>().AddForce(-transform.up * pukeForce * (1.0f - pukeTimer / pukeTime)); } } } if (pukeTimer > pukeTime * 0.5f) { if (pukeEffectObj) { pukeEffectObj.GetComponent <ParticleSystem>().enableEmission = false; } } else { GetComponent <Rigidbody2D>().AddForce(-transform.up * pukeForce); } pukeTimer += Time.deltaTime; yield return(0); } pukeTimer = 0.0f; mouth.GetComponent <SpriteRenderer>().sprite = closedSprite; while (Vector3.Distance(mouth.localScale, Vector3.one) > 0.05f) { mouth.localScale = Vector3.Lerp(mouth.localScale, Vector3.one, Time.deltaTime); yield return(0); } Destroy(pukeEffectObj); mouth.localScale = initMouthScale; isPuking = false; }
void Update() { if (Input.GetKey(KeyCode.LeftShift) && Input.GetKeyDown(KeyCode.LeftArrow)) { ChangeTeamColor(0, -1f); } if (Input.GetKey(KeyCode.LeftShift) && Input.GetKeyDown(KeyCode.RightArrow)) { ChangeTeamColor(0, 1f); } if (!Input.GetKey(KeyCode.LeftShift) && Input.GetKeyDown(KeyCode.LeftArrow)) { ChangeTeamColor(1, -1f); } if (!Input.GetKey(KeyCode.LeftShift) && Input.GetKeyDown(KeyCode.RightArrow)) { ChangeTeamColor(1, 1f); } // 1 -> 1 // 2 -> 5 // 3 -> 2 // 4 -> 6 // 5 -> 3 // 6 -> 7 // 7 -> 4 // 8 -> 8 for (int i = 0; i < 8; i++) { int evenTeamNum = WadeUtils.GetOrderedPlayerNum(i); if (playerInfos[evenTeamNum].inputTimer > inputTime) { // Join Game if (!playerInfos[evenTeamNum].joined && Input.GetButtonDown("Propel_P" + (i + 1) + WadeUtils.platformName)) { PlayerJoinGame(evenTeamNum, i); playerInfos[evenTeamNum].inputTimer = 0f; } // Leave Game if (playerInfos[evenTeamNum].joined && Input.GetButtonDown("Leave_P" + (i + 1) + WadeUtils.platformName)) { PlayerLeaveGame(evenTeamNum); playerInfos[evenTeamNum].inputTimer = 0f; } // Change Texure float scrollInput = Input.GetAxis("Horizontal_P" + (i + 1)); if (playerInfos[evenTeamNum].joined && Mathf.Abs(scrollInput) > WadeUtils.SMALLNUMBER) { PlayerChangeSprite(evenTeamNum, scrollInput); playerInfos[evenTeamNum].inputTimer = 0f; } // Change Team Color float bumperInput = Input.GetAxis("Bumper_P" + (i + 1) + WadeUtils.platformName); if (playerInfos[evenTeamNum].joined & Mathf.Abs(bumperInput) > WadeUtils.SMALLNUMBER) { ChangeTeamColor(evenTeamNum < 4 ? 0 : 1, bumperInput); playerInfos[evenTeamNum].inputTimer = 0f; } } playerInfos[evenTeamNum].inputTimer += Time.deltaTime; } }