コード例 #1
0
    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);
        }
    }
コード例 #2
0
    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);
        }
    }