Esempio n. 1
0
 public BacteryProperties(Color normal)
 {
     divisionFrequency = 0.1f;
     bacteryState      = BacteryState.normal;
     colors            = new Color[4] {
         normal, normal, normal, normal
     };
 }
Esempio n. 2
0
    public IEnumerator SendTo(Vector3 destination)
    {
        Rigidbody rigidBody = GetComponent <Rigidbody> ();

        while (Vector3.Distance(transform.position, destination) >= 0.1f)
        {
            Vector3 direction = destination - transform.position;
            rigidBody.AddForce(direction);
            yield return(null);
        }
        rigidBody.isKinematic = true;
        bacteryState          = BacteryState.sticked;
    }
Esempio n. 3
0
    public void StickToWall()
    {
        bacteryState = BacteryState.moving;
        UIController ui = FindObjectOfType <UIController> ();

        ui.UpdateBacteryCount();
        Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        RaycastHit hit;

        if (Physics.Raycast(ray, out hit, 10f, 1))
        {
            StartCoroutine(SendTo(hit.point));
        }
    }
Esempio n. 4
0
    public IEnumerator SendToDistance(float distance, BacteryState bacteryState)
    {
        StopCoroutine("SendTo");
        Rigidbody2D rigidBody = GetComponent <Rigidbody2D> ();

        rigidBody.bodyType    = RigidbodyType2D.Dynamic;
        rigidBody.isKinematic = false;
        Color initial = props.colors [(int)bacteryState];
        Color final   = props.colors [(int)props.bacteryState];

        zVelocity = 0f;
        BacteryColony2D bC          = GetComponentInParent <BacteryColony2D> ();
        Vector3         destination = distance * Vector3.Normalize(bC.BaryCenter - transform.position) + bC.BaryCenter;
        float           d1          = Vector3.Distance(transform.position, destination);
        float           t           = 0;

        while (Vector3.Distance(bC.BaryCenter, transform.position) >= distance)
        {
            t          += Time.deltaTime;
            destination = distance * Vector3.Normalize(bC.BaryCenter - transform.position) + bC.BaryCenter;
            Vector3 direction = destination - transform.position;
            rigidBody.AddForce(direction);
            zVelocity += direction.z;
            zVelocity /= 30f;
            Vector3 newPos = transform.position + new Vector3(0f, 0f, zVelocity);
            transform.position = newPos;
            float d = Vector3.Distance(transform.position, destination);
            _renderer.GetPropertyBlock(_propBlock);
            _propBlock.SetColor("_EmissionColor", Color.Lerp(initial, final, d / d1));
            _renderer.SetPropertyBlock(_propBlock);
            t += Time.deltaTime;
            yield return(null);
        }
        rigidBody.drag       /= 2f;
        rigidBody.isKinematic = false;
        gameObject.layer      = 10;
        props.bacteryState    = bacteryState;
        UpdateProps();
    }
Esempio n. 5
0
 public BacteryProperties(float df, BacteryState bs, Color[] _colors)
 {
     divisionFrequency = df;
     bacteryState      = bs;
     colors            = _colors;
 }