private void Initialize() { normalBehaviour = (CritterBehaviour)gameObject.AddComponent(data.defaultNormalBehaviour.GetType()); interactBehaviour = (CritterBehaviour)gameObject.AddComponent(data.defaultInteractBehaviour.GetType()); eatingBehaviour = (CritterBehaviour)gameObject.AddComponent(data.defaultEatingBehaviour.GetType()); sleepBehaviour = (CritterBehaviour)gameObject.AddComponent(data.defaultSleepBehaviour.GetType()); threatenedBehaviour = (CritterBehaviour)gameObject.AddComponent(data.defaultThreatenedBehaviour.GetType()); critterInteractions = new List <CritterInteraction>(data.critterInteractions); foreach (CritterInteraction interaction in critterInteractions) { if (interaction.behaviour != null) { gameObject.AddComponent(interaction.behaviour.GetType()); } } dropItem = data.dropItem; scaleVariance = Random.Range(0.75f, 1.25f); //float yPosition = scaleVariance / 2f; float xScale = transform.localScale.x; float yScale = transform.localScale.y; transform.localScale = new Vector3(scaleVariance * xScale, scaleVariance * yScale, 1); //transform.position = new Vector3(transform.position.x, yPosition, transform.position.z); interactDistance *= scaleVariance; }
CritterBehaviour UpdateBehaviourComponent(CritterBehaviour behaviour) { CritterBehaviour[] currentBehaviours = GetComponents <CritterBehaviour>(); foreach (CritterBehaviour cb in currentBehaviours) { if (cb.GetType() == behaviour.GetType()) { return(cb); } } return(null); }
public void AddNewInteraction(Interactables tag, State state, CritterBehaviour behaviour = null) { foreach (CritterInteraction interaction in critter.critterInteractions) { if (interaction.interactableTag == tag) { if (interaction.inducedState == state) { return; } else { critter.critterInteractions.Remove(interaction); break; } } } CritterInteraction newInteraction = new CritterInteraction(); newInteraction.interactableTag = tag; newInteraction.inducedState = state; newInteraction.behaviour = behaviour; critter.critterInteractions.Add(newInteraction); }