private void Appear()
        {
            var point        = Vector3.zero;
            var defaultScale = transform.localScale;

            var scaleX = transform.localScale.x * _platformModel.DecreaseFactor;
            var scaleZ = transform.localScale.z * _platformModel.DecreaseFactor;

            transform.localScale = new Vector3(scaleX, transform.localScale.y, scaleZ);
            if (transform.localScale.x * transform.localScale.z < 1)
            {
                transform.localScale = defaultScale;
            }

            // calc appear point using bounds
            var boundsField    = _field.GetComponent <Renderer>().bounds;
            var boundsPlatform = GetComponent <Renderer>().bounds;

            var maxX = boundsField.max.x - boundsPlatform.size.x * .5f;
            var minX = boundsField.min.x + boundsPlatform.size.x * .5f;
            var x    = Random.Range(minX, maxX);

            var maxZ = boundsField.max.z - boundsPlatform.size.z * .5f;
            var minZ = boundsField.min.z + boundsPlatform.size.z * .5f;
            var z    = Random.Range(minZ, maxZ);

            point = new Vector3(x, 0.0001f, z);

            transform.position = point;
            _animation.Play("Appear");

            OnAppear?.Invoke();
        }
Example #2
0
 void Update()
 {
     if (Frame.Contains(transform.GetRelativeScreenPos(Camera.main)))
     {
         OnAppear.AttemptCall();
     }
     else
     {
         OnDisappeared.AttemptCall();
     }
 }
Example #3
0
    protected virtual void EndHiding()
    {
        float a = (Time.time - time_start_action) / time_action;

        UpdateAlphaRender(render, a);
        if (hiding && a >= 0.5f)
        {
            colliderTakeDamage.enabled = true;
            OnAppear?.Invoke();
            hiding = false;
        }
    }
Example #4
0
        public override void Appear()
        {
            float xMin = 0;
            float xMax = Screen.width / 2 - rectTransform.rect.width;
            float yMin = Screen.width / 2 - rectTransform.rect.height;
            float yMax = Screen.width + rectTransform.rect.height;


            Vector2 position = new Vector2(UnityEngine.Random.Range(xMin, xMax), UnityEngine.Random.Range(yMin, yMax));

            rectTransform.anchoredPosition = position;
            base.Appear();
            OnAppear?.Invoke(this);
        }
Example #5
0
        private void OnStateChanged(PlatformState state)
        {
            switch (state)
            {
            case PlatformState.Appear:
                OnAppear?.Invoke();
                break;

            case PlatformState.Up:
                OnUp?.Invoke();
                break;

            case PlatformState.Down:
                OnDown?.Invoke();
                break;
            }
        }