void Observe() { spider targetInsect = null; float targetDist = float.MaxValue; foreach (spider testInsect in m_memory.VisibleInsects) { if (targetInsect == null) { targetInsect = testInsect; targetDist = (testInsect.transform.position - this.transform.position).magnitude; } else { float testDist = (testInsect.transform.position - this.transform.position).magnitude; if (testDist < targetDist) { targetInsect = testInsect; } } } if (m_memory.TargetInsect != targetInsect) { SetTargetInsect(targetInsect); } // Quick dumb check to make sure that targetInsect is still alive. If not, null it out. if (m_memory.TargetInsect != null && !m_memory.TargetInsect.Alive) { SetTargetInsect(null); } }
void SelectInsect() { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; LayerMask mask = 1 << 8; //use this to determine what you want/don't want to collide with. Debug.DrawLine(ray.origin, ray.GetPoint(200), Color.blue); if (Physics.Raycast(ray, out hit, 200, mask)) { spider collidedSpider = hit.collider.GetComponent <spider>(); if (collidedSpider != null && collidedSpider.Alive) { spider[] spiders = GameObject.FindObjectsOfType <spider>(); foreach (spider thisSpider in spiders) { thisSpider.Selected = (thisSpider == collidedSpider) && !collidedSpider.Selected; } selectedSpider = Array.Find <spider>(spiders, s => s.Selected); } } }
IEnumerator AttackCoroutine(spider targetSpider) { yield return(new WaitForSeconds(1.0f)); this.transform.LookAt(targetSpider.transform); Debug.Log(string.Format("{0} attacking {1} with {2} damage", this.name, targetSpider.name, damage.ToString())); targetSpider.TakeDamage(this, damage); }
void OnTriggerStay(Collider other) { spider testSpider = other.GetComponent <spider>(); if (testSpider != null) { Debug.DrawLine(this.transform.position, testSpider.transform.position, Color.red); } }
// Use this for initialization void Start() { if (instance != null) { DestroyObject(this.gameObject); return; } instance = this; this.sr = this.GetComponent <SpriteRenderer>(); }
void OnTriggerExit(Collider other) { spider testSpider = other.GetComponent <spider>(); if (testSpider != null && m_memory.VisibleInsects.Contains(testSpider)) { Debug.Log(string.Format("{0} LOST sight of insect named {1}.", this.name, testSpider.name)); m_memory.VisibleInsects.Remove(testSpider); m_memory.VisibleInsects.ForEach(DebugTrigger); } }
void OnTriggerEnter(Collider other) { spider testSpider = other.GetComponent <spider>(); if (testSpider != null && !m_memory.VisibleInsects.Contains(testSpider)) { Debug.Log(string.Format("{0} SPIES an insect named {1}.", this.name, testSpider.name)); m_memory.VisibleInsects.Add(testSpider); m_memory.VisibleInsects.ForEach(DebugTrigger); } }
void SetTargetInsect(spider targetInsect) { m_memory.TargetInsect = targetInsect; if (m_memory.TargetInsect != null) { SetTargetPosition(targetInsect.transform.position); } else { ClearTargetPosition(); } }
void TakeDamage(spider attacker, float damage) { m_memory.AttackingInsect = attacker; health -= damage; Debug.Log(string.Format("{0}'s Health is: {1}", this.name, health)); if (health <= 0) { Die(); } }
void ToggleColliderVisible() { spider selectedSpider = GetSelectedSpider(); if (selectedSpider != null) { Renderer[] childRenderers = selectedSpider.GetComponentsInChildren <Renderer>(true); foreach (var renderer in childRenderers) { if (renderer.name == "AttackRadius") { renderer.enabled = !renderer.enabled; } if (renderer.name == "VisibilityRadius") { renderer.enabled = !renderer.enabled; } } } }
void Attack(spider targetSpider) { if (targetSpider == null || !targetSpider.Alive) { Debug.Log("The target spider is dead!"); return; } Move(targetSpider.transform.position); Vector3 directionToTargetPosition = targetSpider.transform.position - transform.localPosition; float targetAngleOff = Vector3.Angle(this.transform.forward, directionToTargetPosition); if (targetAngleOff < m_maxAngleForAttack) { if (m_memory.AttackReady) { m_memory.AttackReady = false; m_spiderAnimation.CrossFade(ANIMATION_ATTACK_LEFT); StartCoroutine(AttackCoroutine(targetSpider)); StartCoroutine(AttackCooldownCoroutine(attackCooldown)); } } }
private void jump_to_crawler(object sender, RoutedEventArgs e) { spider sp = new spider(); this.NavigationService.Navigate(sp); }
private void crawl_test(object sender, RoutedEventArgs e) { spider sp = new spider(); this.frmMain.Navigate(sp); }
private static void DebugTrigger(spider s) { // Debug.Log(s.name); }