public void overrideFlockAffiliation(AnimalAI animal, bool isFlockOverride) { if (entries.Keys.Contains(animal)) { entries[animal].isFlock = isFlockOverride; } }
private void Start() { ai = GetComponent <AnimalAI>(); ai.CaseChanged += OnCaseChanged; phase = phaseCount; isRunning = false; }
public void register(AnimalAI animal) { if (!entries.Keys.Contains(animal)) { entries[animal] = new PerceptionEntry(animal, animal.getSpecies() == self.getSpecies()); } }
private AnimalAI FindPartner() { Transform partnerTransform = ai.FindClosestThing(transform.position, targetMask, vision); if (partnerTransform == null || partnerTransform.gameObject == null) { return(null); } if (AnimalManager.Instance.animals.ContainsKey(partnerTransform.gameObject.GetInstanceID())) { AnimalAI partner = AnimalManager.Instance.animals[partnerTransform.gameObject.GetInstanceID()]; Identity identity = partner.Identity; if (identity.Sex != sex && identity.canReproduce && partner.currentState != Case.HUNGER && partner.currentState != Case.THIRST) { partner.OnCaseChanged(new CaseChangedEventArgs(new ReproductionCaseData(ai), Case.REPRODUCTION)); return(partner); } else { return(null); } } return(null); }
void Update() { //상태 겟셋을 알기 위해서 넣은 에너미 변수 AnimalAI ai = GetComponent <AnimalAI>(); if (ai.GetAnimalType() == AnimalAI.AnimalType.Natural) { //적 캐릭터가 이동중일 때만 회전한다. if (agent.isStopped == false) { //NavMeshAgent가 가야할 방향 백터를 쿼터니언 각도로 변환 Quaternion rot = Quaternion.LookRotation(agent.desiredVelocity); //보간함수를 사용하여 점진적을 회전시킵니다. animalTr.rotation = Quaternion.Slerp(animalTr.rotation , rot, Time.deltaTime * damping); } //순찰상태가 아니라면 바로 빠져나와라. if (!isPatrolling) { return; } //NavMeshAgent가 이동하고 있고 목적지에 도착했는지 여부를 계산. if (agent.velocity.sqrMagnitude >= 0.2f * 0.2f && agent.remainingDistance <= 0.5f) { nextIdx = Random.Range(0, wayPoint.Count); MoveWayPoint(); } } }
protected virtual void Awake() { agent = GetComponent <NavMeshAgent>(); fow = GetComponent <FieldOfView>(); ai = GetComponent <AnimalAI>(); animator = GetComponent <Animator> (); }
static HandlePhysics AnimalAIHandler(AnimalAI ai) { if (ai == AnimalAI.Fly) { return(BirdPhysics.Do); } if (ai == AnimalAI.FleeAir) { return((Level lvl, ref PhysInfo C) => HunterPhysics.Do(lvl, ref C, Block.Air, -1)); } else if (ai == AnimalAI.FleeWater) { return((Level lvl, ref PhysInfo C) => HunterPhysics.Do(lvl, ref C, Block.Water, -1)); } else if (ai == AnimalAI.FleeLava) { return((Level lvl, ref PhysInfo C) => HunterPhysics.Do(lvl, ref C, Block.Lava, -1)); } if (ai == AnimalAI.KillerAir) { return((Level lvl, ref PhysInfo C) => HunterPhysics.Do(lvl, ref C, Block.Air, 1)); } else if (ai == AnimalAI.KillerWater) { return((Level lvl, ref PhysInfo C) => HunterPhysics.Do(lvl, ref C, Block.Water, 1)); } else if (ai == AnimalAI.KillerLava) { return((Level lvl, ref PhysInfo C) => HunterPhysics.Do(lvl, ref C, Block.Lava, 1)); } return(null); }
private void Start() { ai = GetComponent <AnimalAI>(); _animationManager = GetComponent <AnimationManager>(); ai.CaseChanged += OnCaseChanged; isRunning = false; }
public PerceptionModule(AnimalAI self) { this.self = self; this.entries = new Dictionary <AnimalAI, PerceptionEntry>(); this.flockCenter = self.getPosition(); hasNoFlock = false; interactablesInRange = new List <Interactable>(); }
// Use this for initialization void Start() { animalAI = GetComponent <AnimalAI>(); hungerThreashoold = 50; eatrange = 1; biteDamage = 5; foodGain = 5; }
static void SetAI(Player p, BlockProps[] scope, BlockID block, string msg) { AnimalAI ai = AnimalAI.None; if (!CommandParser.GetEnum(p, msg, "Animal AI", ref ai)) return; scope[block].AnimalAI = ai; string name = BlockProps.ScopedName(scope, p, block); p.Message("Animal AI for {0} set to: {1}", name, ai); }
private void OnTriggerEnter(Collider other) { AnimalAI animal = other.GetComponent <AnimalAI>(); if (animal != null) { animals.Add(animal); } }
private void OnTriggerExit(Collider other) { AnimalAI animal = other.GetComponent <AnimalAI>(); if (animal != null) { animals.Remove(animal); } }
private void Update() { hunger += Time.deltaTime; if (isRunning) { if (!isVFXUsed) { isVFXUsed = true; vfx = VFXManager.Instance.GetStateVFX(transform.position, ai, VFXType.HUNGER); } if (target != null) { _animationManager.SetState(AnimationType.Walk); ai.Move(target.position); if (Vector3.Distance(target.position, transform.position) < targetRange) { if (target.tag == "Chicken") { AnimalAI targetAi = target.GetComponent <AnimalAI>(); // vfx = VFXManager.Instance.GetDeadVFX(transform.position, targetAi, VFXType.EATDEAD); // VFXManager.Instance.WaitPush(vfx, VFXType.EATDEAD); target.GetComponent <AnimalAI>().OnCaseChanged(new CaseChangedEventArgs(null, Case.DEATH)); } hunger = 0; isRunning = false; alerted = false; target = null; isVFXUsed = false; VFXManager.Instance.Push(vfx, VFXType.HUNGER); ai.OnCaseChanged(new CaseChangedEventArgs(null, Case.IDLE)); } } else { isRunning = false; ai.OnCaseChanged(new CaseChangedEventArgs(null, Case.IDLE)); } } if (!alerted && hunger > hungerTreshold) { alerted = true; ai.OnCaseChanged(new CaseChangedEventArgs(null, Case.AVAILABLE)); } if (hunger > deathTreshold) { // vfx = VFXManager.Instance.GetDeadVFX(transform.position, ai, VFXType.HUNGERDEAD); // VFXManager.Instance.WaitPush(vfx, VFXType.HUNGERDEAD); ai.OnCaseChanged(new CaseChangedEventArgs(null, Case.DEATH)); } }
public PerceptionEntry(AnimalAI animal, bool isFlock) { this.animal = animal; this.lkp = new Vector3(); this.isLkpValid = false; this.lkpTimeStamp = float.MinValue; this.aversion = 0.0f; this.isFlock = isFlock; this.boxCollider = animal.GetComponent <BoxCollider>(); }
// Use this for initialization void Start() { ai = GameObject.Find("Animal_").GetComponent <AnimalAI>(); Audio = GetComponent <AudioSource>(); Dialog = GetComponent <DialogSystem>(); animalAnimations = GameObject.FindGameObjectWithTag("Animal").GetComponentInChildren <AnimalAnimations>(); Audio.loop = false; Audio.Stop(); }
void Start() { animal = GameObject.FindGameObjectWithTag("Animal").GetComponent <AnimalAI>(); animalAudio = GameObject.FindGameObjectWithTag("Animal").GetComponentInChildren <AudioSource>(); startVolume = FootAudio.volume; publicAudio = GetComponent <AudioSource>(); movement = GetComponentInParent <PlayerMoverment1>(); }
private void Start() { ai = GetComponent <AnimalAI>(); _animationManager = GetComponent <AnimationManager>(); ai.CaseChanged += OnCaseChanged; ai.caseDatas.Add(new CaseContainer(Case.HUNGER, hunger, hungerTreshold, criticalTreshold, CasePriority.LOW)); isRunning = false; alerted = false; isVFXUsed = false; }
// Use this for initialization void Start() { animalAI = GetComponent <AnimalAI>(); player = GameObject.Find("Player"); terrain t = GameObject.Find("Terrain").GetComponent <terrain>(); range = GameObject.Find("Terrain").GetComponent <terrain>().worldSize; arriveRange = 2; interval = 0; target = Vector3.zero; }
public void KillAnimalNetwork() { gameObject.AddComponent <FadeOut>(); AnimalAI aiScript = GetComponent <AnimalAI>(); if (aiScript != null) { aiScript.kill(); } }
private string CurrentValueOfStat2() { string text = "MIMIC FATIGUE"; AnimalStat = gameObject.GetComponentInParent <AnimalAI>(); if (AnimalStat != null) { text = ((int)AnimalStat.fatigue).ToString(); } return(text); }
private void Start() { ai = GetComponent <AnimalAI>(); ai.CaseChanged += OnCaseChanged; _animationManager = GetComponent <AnimationManager>(); flee = false; ai.caseDatas.Add(new CaseContainer(Case.FLEE, 0, 0.5f, 0.5f, CasePriority.HIGH)); isRunning = false; }
private void Awake() { if (PhotonNetwork.isMasterClient || !PhotonNetwork.connected) { user = GetComponent <AnimalAI>(); bt = new BehaviorTree(user.animalConfig.idleTree, this); } else { Destroy(this); } }
public void unReserve(AnimalAI animal) { for (int i = 0; i < occupied.Length; i++) { if (occupied[i] == animal) { occupied[i] = null; reservedCount--; break; } } }
private string CurrentValueOfStat1() { string text = "MIMIC HUNGER"; AnimalStat = gameObject.GetComponentInParent <AnimalAI>(); if (AnimalStat != null) { text = ((int)AnimalStat.hunger).ToString(); } return(text); }
private void Start() { ai = GetComponent <AnimalAI>(); _animationManager = GetComponent <AnimationManager>(); ai.CaseChanged += OnCaseChanged; ai.caseDatas.Add(new CaseContainer(Case.THIRST, thirst, thirstTreshold, criticalTreshold, CasePriority.MID)); thisTransform = transform; isRunning = false; alerted = false; isVFXUsed = false; }
void OnSceneGUI() { AnimalAI aow = (AnimalAI)target; Handles.color = Color.green; if (aow.areaCenter != null) { Handles.DrawWireCube(aow.walkBounds.bounds.center, aow.walkBounds.bounds.size); Handles.color = Color.blue; Handles.DrawWireArc(aow.walkBounds.bounds.max, Vector3.up, Vector3.forward, 360, 2); Handles.DrawWireArc(aow.walkBounds.bounds.min, Vector3.up, Vector3.forward, 360, 2); } }
void AIOnCrop(AnimalAI ai) { m_life -= Time.deltaTime; if (Eaten) { Die(); ai.FindNextCrop(); } else { m_particleSystem.Play(); } }
public static bool Prefix(AnimalAI __instance, Character ___m_character, Character ___m_target, float dt) { if (___m_character.GetSEMan().HaveStatusEffect("SE_Fear")) { __instance.UpdateTakeoffLanding(dt); typeof(BaseAI).GetMethod("UpdateRegeneration", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.FlattenHierarchy).Invoke(__instance, new object[] { dt }); Vector3 fleeFrom = ___m_target?.transform?.position ?? ___m_character.transform.position; var methodinfo = typeof(BaseAI).GetMethod("Flee", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.FlattenHierarchy); methodinfo.Invoke(__instance, new object[] { dt, fleeFrom }); return(false); } return(true); }
// Start is called before the first frame update void Start() { ai = GetComponent <AnimalAI>(); _animationManager = GetComponent <AnimationManager>(); ai.CaseChanged += OnCaseChanged; ai.caseDatas.Add(new CaseContainer(Case.REPRODUCTION, reproductionUrge, reproductionTreshold, 1000f, CasePriority.TOO_LOW)); isRunning = false; alerted = false; isVFXUsed = false; UpdateData(); }