public BacteryProperties(Color normal) { divisionFrequency = 0.1f; bacteryState = BacteryState.normal; colors = new Color[4] { normal, normal, normal, normal }; }
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; }
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)); } }
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(); }
public BacteryProperties(float df, BacteryState bs, Color[] _colors) { divisionFrequency = df; bacteryState = bs; colors = _colors; }