예제 #1
0
 public void AddRandomRotation(Rigidbody2D p_body)
 {
     if (p_body != null)
     {
         float v_randomRotation = KiltUtils.RandomRange(m_minAngularVelocity, m_maxAngularVelocity);
         p_body.angularVelocity += v_randomRotation;
     }
 }
예제 #2
0
    protected virtual GameObject CreateFragment(GameObject p_parent, Sprite p_sprite, int p_index)
    {
        Vector2 v_minInitialOffset = GetGlobalMinInitialOffSet();
        Vector2 v_maxInitialOffset = GetGlobalMaxInitialOffSet();

        GameObject v_object = new GameObject("Frag");

        v_object.transform.parent     = p_parent != null? p_parent.transform : this.transform.parent;
        v_object.transform.localScale = new Vector3(m_fragmentScale * this.transform.localScale.x, m_fragmentScale * this.transform.localScale.y, m_fragmentScale * this.transform.localScale.z);
        v_object.transform.position   = new Vector3(this.transform.position.x + KiltUtils.RandomRange(v_minInitialOffset.x, v_maxInitialOffset.x), this.transform.position.y + KiltUtils.RandomRange(v_minInitialOffset.y, v_maxInitialOffset.y), this.transform.position.z);
        v_object.transform.rotation   = this.transform.rotation;
        v_object.AddComponent <Fragment>();
        Rigidbody2D v_body = v_object.AddComponent <Rigidbody2D>();

        if (m_createFragmentCollider)
        {
            CircleCollider2D v_collider = v_object.AddComponent <CircleCollider2D>();
            v_collider.radius = 0.01f;
            CircleCollider2D v_collider2 = v_object.AddComponent <CircleCollider2D>();
            v_collider2.radius = 0.01f;
            v_collider2.offset = new Vector2(0.005f, 0.005f);
        }
        if (this.GetComponent <Rigidbody2D>() != null)
        {
            v_body.mass            = Mathf.Max(0.001f, m_fragmentMass); //(rigidbody2D.mass/Mathf.Max(1,m_maxAmountOfFragments))/25;
            v_body.velocity        = UseOldRigidBodyVelocity? GetComponent <Rigidbody2D>().velocity : Vector2.zero;
            v_body.angularVelocity = UseOldRigidBodyVelocity? GetComponent <Rigidbody2D>().angularVelocity : 0;
            v_body.gravityScale    = m_fragmentGravityScale;
        }
        SpriteRenderer v_spriteRenderer = v_object.AddComponent <SpriteRenderer>();

        v_spriteRenderer.sprite = p_sprite;
        SpriteRenderer v_currentSpriteRenderer = gameObject.GetComponent <SpriteRenderer>();

        if (v_currentSpriteRenderer != null)
        {
            v_spriteRenderer.color            = v_currentSpriteRenderer.color;  //renderer.material.GetColor("_Color");
            v_spriteRenderer.material         = v_currentSpriteRenderer.material;
            v_spriteRenderer.sortingLayerID   = v_currentSpriteRenderer.sortingLayerID;
            v_spriteRenderer.sortingLayerName = v_currentSpriteRenderer.sortingLayerName;
            v_spriteRenderer.sortingOrder     = 15;
        }
        AddRandomImpulse(v_body);
        AddRandomRotation(v_body);
        if (m_enableIndividualFragmentEffect && m_individualFragmentEffect != null)
        {
            GameObject v_effect = GameObject.Instantiate(m_individualFragmentEffect) as GameObject;
            v_effect.transform.parent        = v_object.transform;
            v_effect.transform.localPosition = Vector2.zero;
            v_effect.transform.rotation      = Quaternion.identity;
            v_effect.transform.localScale    = Vector3.one;
        }
        //PauseManager.Pause();
        return(v_object);
    }
예제 #3
0
 public void AddRandomImpulse(Rigidbody2D p_body)
 {
     if (p_body != null)
     {
         float   v_randomImpulse = KiltUtils.RandomRange(m_minImpulseForce, m_maxImpulseForce);
         Vector2 v_finalVector   = VectorHelper.Direction(p_body.gameObject.transform.parent.position, p_body.gameObject.transform.position);
         v_finalVector = new Vector2(v_finalVector.x * v_randomImpulse, v_finalVector.y * v_randomImpulse);
         p_body.AddForce(v_finalVector, ForceMode2D.Impulse);
         //p_body.AddForce(new Vector2(0,v_randomImpulse));
     }
 }
    public AudioClip GetClip()
    {
        AudioClip v_return = null;

        if (PlayerOption == RandomClipsStructEnum.RandomPlay)
        {
            float v_randomChanceValue = KiltUtils.RandomRange(0.0f, 100.0f);
            if (Clips.Count > 0 && v_randomChanceValue < ProbChanceToCall)
            {
                v_return = Clips[KiltUtils.RandomRange(0, Clips.Count)];
            }
        }
        return(v_return);
    }
예제 #5
0
    public static void PlugBallonToObject(GameObject p_object, BalloonProperty p_ballon, Rope2D p_rope, Vector2 p_minDistance, Vector2 p_maxDistance, bool p_ballonIsAPrefab = true, bool p_ropeIsAPrefab = true, bool p_useBallonPrefabScale = true, bool p_useRopePrefabScale = true, string p_errorSolverDirectory = "Prefabs")
    {
        GameObject v_ropeParentObject  = GameObject.Find("RopesContainer");
        GameObject v_blockParentObject = GameObject.Find("BlocksContainer");

        GameObject v_ballonInScene = null;
        GameObject v_ropeInScene   = null;

        //Try Solve Ballon Errors
        if (p_ballon == null)
        {
            BalloonProperty[] v_ballons = KiltUtils.FindAllResourcesComponentsAtFolder <BalloonProperty>(p_errorSolverDirectory);
            if (v_ballons.Length <= 0)
            {
                v_ballons = KiltUtils.FindAllResourcesComponentsOfType <BalloonProperty>();
            }
            if (v_ballons.Length > 0 && v_ballons[0] != null)
            {
                v_ballonInScene = KiltUtils.Instantiate(v_ballons[0].gameObject);
                v_ballonInScene.transform.parent = v_blockParentObject != null? v_blockParentObject.transform : null;
                if (p_useBallonPrefabScale)
                {
                    v_ballonInScene.transform.localScale = v_ballons[0].gameObject.transform.localScale;
                }
            }
        }
        else if (p_ballonIsAPrefab)
        {
            v_ballonInScene = KiltUtils.Instantiate(p_ballon.gameObject);
            v_ballonInScene.transform.parent = v_blockParentObject != null? v_blockParentObject.transform : null;
            if (p_useBallonPrefabScale)
            {
                v_ballonInScene.transform.localScale = p_ballon.gameObject.transform.localScale;
            }
        }
        else
        {
            v_ballonInScene = p_ballon.gameObject;
        }

        //Try Solve Rope Errors
        if (p_rope == null)
        {
            Rope2D[] v_ropes = KiltUtils.FindAllResourcesComponentsAtFolder <Rope2D>(p_errorSolverDirectory);
            if (v_ropes.Length <= 0)
            {
                v_ropes = KiltUtils.FindAllResourcesComponentsOfType <Rope2D>();
            }
            if (v_ropes.Length > 0 && v_ropes[0] != null)
            {
                v_ropeInScene = KiltUtils.Instantiate(v_ropes[0].gameObject);
                v_ropeInScene.transform.parent = v_ropeParentObject != null? v_ropeParentObject.transform : null;
                if (p_useRopePrefabScale)
                {
                    v_ropeInScene.transform.localScale = v_ropes[0].gameObject.transform.localScale;
                }
            }
        }
        else if (p_ropeIsAPrefab)
        {
            v_ropeInScene = KiltUtils.Instantiate(p_rope.gameObject);
            v_ropeInScene.transform.parent = v_ropeParentObject != null? v_ropeParentObject.transform : null;
            if (p_useRopePrefabScale)
            {
                v_ropeInScene.transform.localScale = p_rope.gameObject.transform.localScale;
            }
        }
        else
        {
            v_ropeInScene = p_rope.gameObject;
        }

        if (v_ballonInScene != null && p_object != null && v_ropeInScene != null)
        {
            v_ballonInScene.transform.localPosition = new Vector3(v_ballonInScene.transform.localPosition.x, v_ballonInScene.transform.localPosition.y, 20);             // Prevent Rope Collider to be in front of this Object
            v_ballonInScene.name = v_ballonInScene.name.Replace("(Clone)", "");
            v_ropeInScene.name   = v_ropeInScene.name.Replace("(Clone)", "") + "[(" + p_object.name.Replace("(Selected)", "") + ") to (" + v_ballonInScene.name + ")]";
            TackRope v_tackRope = v_ropeInScene.GetComponent <TackRope>();
            if (v_tackRope != null)
            {
                v_tackRope.ObjectA = p_object;
                v_tackRope.ObjectB = v_ballonInScene;

                Vector2 v_newOffSetPosition = new Vector2(KiltUtils.RandomRange(p_minDistance.x, p_maxDistance.x), KiltUtils.RandomRange(p_minDistance.y, p_maxDistance.y));
                v_ballonInScene.transform.position = new Vector3(p_object.transform.position.x + v_newOffSetPosition.x, p_object.transform.position.y + v_newOffSetPosition.y, p_object.transform.position.z);
                if (Application.isPlaying)
                {
                    v_tackRope.CreateRope();
                }
            }
        }
        if (v_ballonInScene != null && v_ballonInScene.GetComponent <BlockSelector>() == null)
        {
            v_ballonInScene.AddComponent <BlockSelector>();
        }
    }
예제 #6
0
 public void StartAlarm()
 {
     CurrentTime = KiltUtils.RandomRange(MinTime, MaxTime);
 }