public void TestAndDivide(float number, BacteryColony2D colony, GameObject animation) { Transform colonyTransform = colony.GetComponent <Transform> (); if (number <= props.divisionFrequency / 60f) { GameObject newBactery = Divide(colonyTransform, animation); Bactery2D newB = newBactery.GetComponent <Bactery2D> (); newB.props = props.Clone(); newB.UpdateProps(); colony.Add(newBactery); UpdateBacteryCount(); } }
IEnumerator SendTo(Vector3 destination, BacteryProperties targetProps) { Rigidbody2D rigidBody = GetComponent <Rigidbody2D> (); rigidBody.drag *= 2f; Color final = props.colors [(int)targetProps.bacteryState]; Color initial = props.colors [(int)props.bacteryState]; float d1 = Vector3.Distance(transform.position, destination); float t = 0f; while ((Vector3.Distance(transform.position, destination) >= 0.05f) && t < 20f) { 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(final, initial, d / d1)); _renderer.SetPropertyBlock(_propBlock); t += Time.deltaTime; yield return(null); } rigidBody.bodyType = RigidbodyType2D.Static; rigidBody.isKinematic = true; props = targetProps.Clone(); }
public void StartConjugate(Vector3 position, BacteryProperties targetProperties) { gameObject.layer = 11; BacteryProperties newProps = targetProperties.Clone(); props.bacteryState = BacteryState.moving; StartCoroutine(SendTo(position, targetProperties)); props.bacteryState = BacteryState.conjugating; Invoke("ConjugateBack", 3f); }