Ejemplo n.º 1
0
    void Update()
    {
        RaycastHit hit;
        Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);

        if (Physics.Raycast(ray, out hit, 100f))
        {
            CubeController hitCube = hit.transform.GetComponentInParent <CubeController>();

            // Target switched
            if (hitCube != null && hitCube != previousTarget)
            {
                if (hitCube != blueCube)
                {
                    // Light up new target
                    DOTween.Kill(hitCube);
                    hitCube.GetComponentInChildren <MeshRenderer>().material.DOColor(emissiveColor, "_EmissiveColor", tweenDuration).SetId(hitCube).SetEase(tweenEaseType);

                    Light light = hitCube.GetComponentInChildren <Light>();
                    light.enabled = true;
                    light.DOIntensity(0f, tweenDuration).From().SetId(hitCube).SetEase(tweenEaseType)
                    .OnComplete(() =>
                    {
                        AssignBlueCube(hitCube);
                    });
                }


                // Unlight the previous target
                if (previousTarget != null && previousTarget != blueCube)
                {
                    List <Tween> tweens        = DOTween.TweensById(previousTarget);
                    float        tweenDuration = tweens[0].Elapsed();
                    DOTween.Kill(previousTarget);

                    previousTarget.GetComponentInChildren <MeshRenderer>().material.DOColor(Color.black, "_EmissiveColor", tweenDuration * tweenFadeOutMultiplier).SetId(previousTarget).SetEase(Ease.InSine);
                    Light light = previousTarget.GetComponentInChildren <Light>();
                    light.DOIntensity(0f, tweenDuration * tweenFadeOutMultiplier).From().SetId(previousTarget).SetEase(Ease.InSine)
                    .OnComplete(() =>
                    {
                        light.enabled   = false;
                        light.intensity = lightIntensity;
                    });
                }


                // Update reference to currentTarget
                previousTarget = hitCube;
            }
        }
    }
Ejemplo n.º 2
0
    void AssignBlueCube(CubeController cube)
    {
        if (blueCube != null)
        {
            blueCube.GetComponentInChildren <MeshRenderer>().material.DOColor(Color.black, "_EmissiveColor", tweenDuration * tweenFadeOutMultiplier).SetId(blueCube).SetEase(tweenEaseType);
            Light light = blueCube.GetComponentInChildren <Light>();
            light.DOIntensity(0f, tweenDuration * tweenFadeOutMultiplier).SetId(blueCube).SetEase(tweenEaseType)
            .OnComplete(() =>
            {
                light.enabled   = false;
                light.intensity = lightIntensity;
            });
        }

        cube.GetComponentInChildren <ParticleSystem>().Play();
        blueCube = cube;
        if (cubeManager != null)
        {
            cubeManager.MoveCubes();
        }
    }