public virtual void Start() { rb = GetComponent <Rigidbody>(); trailRenderer = transform.Find("Trail").GetComponent <TrailRenderer>(); trailRenderer.material.color = new Color(color.r, color.g, color.b, 0.65f); GetComponent <MeshRenderer>().material.color = new Color(color.r * 1.3f, color.g * 1.3f, color.b * 1.3f); area = new GameObject().AddComponent <CharacterArea>(); area.name = characterName + "Area"; area.character = this; Transform areaTrans = area.transform; areaFilter = area.gameObject.AddComponent <MeshFilter>(); areaMeshRenderer = area.gameObject.AddComponent <MeshRenderer>(); areaMeshRenderer.material = material; areaMeshRenderer.material.color = color; float step = 360f / startAreaPoints; for (int i = 0; i < startAreaPoints; i++) { areaVertices.Add(transform.position + Quaternion.Euler(new Vector3(0, step * i, 0)) * Vector3.forward * startAreaRadius); } UpdateArea(); trailCollidersHolder = new GameObject(); trailCollidersHolder.transform.SetParent(areaTrans); trailCollidersHolder.name = characterName + "TrailCollidersHolder"; trailCollidersHolder.layer = 8; }
private void OnTriggerEnter(Collider other) { CharacterArea characterArea = other.GetComponent <CharacterArea>(); if (characterArea && characterArea != area && !attackedCharacters.Contains(characterArea.character)) { attackedCharacters.Add(characterArea.character); } if (other.gameObject.layer == 8) { characterArea = other.transform.parent.GetComponent <CharacterArea>(); characterArea.character.Die(); } }
private void OnTriggerEnter(Collider other) { CharacterArea otherCharacter = other.GetComponent <CharacterArea>(); if (otherCharacter && otherCharacter != area && !attackedCharacters.Contains(otherCharacter.builder)) { attackedCharacters.Add(otherCharacter.builder); } if (other.gameObject.layer == 8) { otherCharacter = other.transform.parent.GetComponent <CharacterArea>(); otherCharacter.builder.Die(); } }
private void InitialiseCharacter() { //create new gameobject attached to character, containing 3 components area = new GameObject().AddComponent <CharacterArea>(); area.name = characterName + "Area"; area.character = this; Transform areaTrans = area.transform; areaFilter = area.gameObject.AddComponent <MeshFilter>(); areaMeshRend = area.gameObject.AddComponent <MeshRenderer>(); areaMeshRend.material = material; areaMeshRend.material.color = color; //create another child gameobject to area object areaOutline = new GameObject(); areaOutline.name = characterName + "AreaOutline"; Transform areaOutlineTrans = areaOutline.transform; areaOutlineTrans.position += new Vector3(0, -0.495f, -0.1f); areaOutlineTrans.SetParent(areaTrans); areaOutlineFilter = areaOutline.AddComponent <MeshFilter>(); areaOutlineMeshRend = areaOutline.AddComponent <MeshRenderer>(); areaOutlineMeshRend.material = material; areaOutlineMeshRend.material.color = new Color(color.r * 0.7f, color.g * 0.7f, color.b * 0.7f); float step = 360f / startAreaPoints; for (int i = 0; i < startAreaPoints; i++) { areaVertices.Add(transform.position + Quaternion.Euler(new Vector3(0, step * i, 0)) * Vector3.forward * startAreaRadius); } UpdateArea(); trailCollidersHolder = new GameObject(); trailCollidersHolder.transform.SetParent(areaTrans); trailCollidersHolder.name = characterName + "Snow Trail Colliders Holder"; trailCollidersHolder.layer = 8; }