Example #1
0
    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;
    }
Example #2
0
    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();
        }
    }
Example #3
0
    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();
        }
    }
Example #4
0
    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;
    }