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(); }
void Update() { if (Frame.Contains(transform.GetRelativeScreenPos(Camera.main))) { OnAppear.AttemptCall(); } else { OnDisappeared.AttemptCall(); } }
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; } }
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); }
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; } }