void Update() { if (Input.GetKeyDown("space")) { PauseSound(); } if (Input.GetKeyDown("r")) { if (forwards == 1) { forwards = 0; } else { forwards = 1; } } if (hasBeenPressed == 1) { for (int m = 0; m < numOfVectors; m++) { LineRenderer lineRenderer = EmptyRayHolders[m].GetComponent <LineRenderer>(); Vector3 OldPosition = myarrays[m][lengthOfLineRenderer - 1]; Vector3 NewPosition = new Vector3(0, 0, 0); for (int i = 0; i < lengthOfLineRenderer - 1; i++) { int j = i + 1; myarrays[m][i] = myarrays[m][j]; } //DONT HIT UI int layerMask = 1 << 5; layerMask = ~layerMask; RaycastHit hit; if (Physics.Raycast(OldPosition, TravelVectors[m], out hit, stepFactor, layerMask)) { TravelVectors[m] = Vector3.Reflect(TravelVectors[m], hit.normal); Vector3 Deconstruct = hit.normal; Deconstruct.x = Deconstruct.x * .05f; Deconstruct.y = Deconstruct.y * .05f; Deconstruct.z = Deconstruct.z * .05f; float NRC = GetNRC.getNRCFromCollider(hit.collider); colorArrayAlpha[m] = colorArrayAlpha[m] * (1 - NRC); if (colorArrayAlpha[m] > .01) { if (NRC < .2) { GameObject ripple = Instantiate(spriteBillboardPrefab1, hit.point + Deconstruct, Quaternion.identity); Destroy(ripple, 1); } else if (NRC > .2 && NRC < .6) { GameObject ripple = Instantiate(spriteBillboardPrefab, hit.point + Deconstruct, Quaternion.identity); Destroy(ripple, 1); } else { GameObject ripple = Instantiate(spriteBillboardPrefab2, hit.point + Deconstruct, Quaternion.identity); Destroy(ripple, 1); } } } // Change the NewPosition Vector's x and y components if (forwards == 1) { NewPosition.x = OldPosition.x + (TravelVectors[m].x * stepFactor); NewPosition.y = OldPosition.y + (TravelVectors[m].y * stepFactor); NewPosition.z = OldPosition.z + (TravelVectors[m].z * stepFactor); } else { if (OldPosition == gameObject.transform.position) { NewPosition.x = OldPosition.x; NewPosition.y = OldPosition.y; NewPosition.z = OldPosition.z; } else { NewPosition.x = OldPosition.x - (TravelVectors[m].x * stepFactor); NewPosition.y = OldPosition.y - (TravelVectors[m].y * stepFactor); NewPosition.z = OldPosition.z - (TravelVectors[m].z * stepFactor); } } Color c1 = new Color(0.5f * colorArrayAlpha[m], colorArrayAlpha[m], 1, colorArrayAlpha[m] * 2); Color c2 = new Color(1, 1, 1, 0); myarrays[m][lengthOfLineRenderer - 1] = NewPosition; lineRenderer.SetPositions(myarrays[m]); lineRenderer.SetColors(c2, c1); //Set material color and opacity colorArrayAlpha[m] = colorArrayAlpha[m] - colorFalloff; } colorCounter = colorCounter - colorFalloff; if (pause == 1) // to pause the game { hasBeenPressed = 0; } if (colorCounter < .01) { for (int m = 0; m < numOfVectors; m++) { Destroy(EmptyRayHolders[m]); } Destroy(gameObject); hasBeenPressed = 0; } counter++; //Debug.Log(Time.deltaTime); } }
void Update() { if (Input.GetKeyDown("space")) { PauseSound(); } if (allowCrowd) { int myMod = Random.Range(80, 200); if (counter % myMod == 0) { if (hasAlreadyHappened == 1) { for (int m = 0; m < numOfVectors; m++) { Destroy(EmptyRayHolders[m]); } } ChangedTravelVectors = TravelVectors; MakeNoise(); for (int m = 0; m < numOfVectors; m++) { colorArrayAlpha[m] = 1; } counter = 0; } } //if (Input.GetKeyDown("c")) if (hasBeenPressed == 1) { for (int m = 0; m < numOfVectors; m++) { LineRenderer lineRenderer = EmptyRayHolders[m].GetComponent <LineRenderer>(); Vector3 OldPosition = myarrays[m][lengthOfLineRenderer - 1]; Vector3 NewPosition = new Vector3(0, 0, 0); for (int i = 0; i < lengthOfLineRenderer - 1; i++) { int j = i + 1; myarrays[m][i] = myarrays[m][j]; } //DONT HIT UI int layerMask = 1 << 5; layerMask = ~layerMask; RaycastHit hit; if (Physics.Raycast(OldPosition, ChangedTravelVectors[m], out hit, stepFactor, layerMask)) { ChangedTravelVectors[m] = Vector3.Reflect(ChangedTravelVectors[m], hit.normal); Vector3 Deconstruct = hit.normal; Deconstruct.x = Deconstruct.x * .05f; Deconstruct.y = Deconstruct.y * .05f; Deconstruct.z = Deconstruct.z * .05f; float NRC = GetNRC.getNRCFromCollider(hit.collider); //If forwards, reduce vloume of hit ray according to NRC of surface if (forwards == 1) { colorArrayAlpha[m] = colorArrayAlpha[m] * (1 - NRC); } else { colorArrayAlpha[m] = colorArrayAlpha[m] / (1 - NRC); } } // Change the NewPosition Vector's x and y components if (forwards == 1) { NewPosition.x = OldPosition.x + (ChangedTravelVectors[m].x * stepFactor); NewPosition.y = OldPosition.y + (ChangedTravelVectors[m].y * stepFactor); NewPosition.z = OldPosition.z + (ChangedTravelVectors[m].z * stepFactor); } else { if (OldPosition == gameObject.transform.position) { NewPosition.x = OldPosition.x; NewPosition.y = OldPosition.y; NewPosition.z = OldPosition.z; } else { NewPosition.x = OldPosition.x - (ChangedTravelVectors[m].x * stepFactor); NewPosition.y = OldPosition.y - (ChangedTravelVectors[m].y * stepFactor); NewPosition.z = OldPosition.z - (ChangedTravelVectors[m].z * stepFactor); } } Color c1 = new Color(0.5f * colorArrayAlpha[m], colorArrayAlpha[m], 1, colorArrayAlpha[m] * 2); Color c2 = new Color(1, 1, 1, 0); myarrays[m][lengthOfLineRenderer - 1] = NewPosition; lineRenderer.SetPositions(myarrays[m]); lineRenderer.SetColors(c2, c1); //Set material color and opacity colorArrayAlpha[m] = colorArrayAlpha[m] - colorFalloff; } colorCounter = colorCounter - colorFalloff; if (pause == 1) // to pause the game { hasBeenPressed = 0; } counter++; //Debug.Log(Time.deltaTime); } }