// Start is called before the first frame update
 void Start()
 {
     if (points.Length > 0)
     {
         currentTarget = points[0];
     }
     tolerance   = speed * Time.deltaTime;
     meshDestroy = GetComponent <MeshDestroy>();
 }
 //Explosive damage to set a crumble effect with force if it would kill the enemy.
 public void TakeExplosiveDamage(int damage, float force)
 {
     //Only change crumble force if this would kill the enemy.
     if (health - damage <= 0)
     {
         MeshDestroy crumbleEffect = GetComponent <MeshDestroy>();
         crumbleEffect.ExplodeForce = force;
         crumbleEffect.CutCascades  = 4;
     }
     TakeDamage(damage);
 }
Exemple #3
0
 public void Notify(MeshDestroy m)
 {
     if (destroyIfAllDestroyed.Contains(m))
     {
         destroyIfAllDestroyed.Remove(m);
         if (destroyIfAllDestroyed.Count == 0)
         {
             DestroyMesh();
         }
     }
 }
Exemple #4
0
 private void OnCollisionEnter(Collision collision)
 {
     if (collision.gameObject.tag == "DestroyAble" && HasCrown)
     {
         if (collision.gameObject.GetComponent <MeshDestroy>() == null)
         {
             destructionParticle.Emit(10);
             CameraShake.instance?.Shake(.5f);
             AudioManager.instance?.PlaySound(AudioEffect.destruction, .5f);
             MeshDestroy md = collision.gameObject.AddComponent <MeshDestroy>();
             md.sliced = true;
             md.DestroyMesh();
         }
     }
 }
Exemple #5
0
    private void Start()
    {
        _currentState = State.Idle;

        _movementController = GetComponent <NPCMovement>();
        _meshDestroyer      = GetComponentInChildren <MeshDestroy>();
        _animAI             = GetComponent <Animator>();
        _navmeshAgent       = GetComponent <NavMeshAgent>();
        _health             = GetComponent <Health>();


        attackAnimations = new List <AttackAnimationInfo>();
        attackAnimations.Add(new AttackAnimationInfo("jab", 0.375f));
        attackAnimations.Add(new AttackAnimationInfo("cross", 0.458f));
    }
    //When the enemy dies play a VFX and either cut/crumble depending on the enemy and attack, or just deactivate.
    private void Death()
    {
        FindObjectOfType <TimedCourse>().CountEnemies();
        Destroy(Instantiate(vfx, transform.position, transform.rotation), 2); //have vfx self destroy later
        MeshDestroy crumbleEffect = GetComponent <MeshDestroy>();

        if (crumbleEffect)
        {
            crumbleEffect.DestroyMesh(cutDirection, cutPoint, canCutChild);
        }
        else
        {
            gameObject.SetActive(false);
            //Destroy(gameObject);
        }
    }
Exemple #7
0
        public void MakeGameobject(MeshDestroy original, bool canCutChild)
        {
            GameObject = new GameObject(original.name);
            GameObject.transform.position   = original.transform.position;
            GameObject.transform.rotation   = original.transform.rotation;
            GameObject.transform.localScale = original.transform.localScale;

            var mesh = new Mesh();

            mesh.name = original.GetComponent <MeshFilter>().mesh.name;

            mesh.vertices = Vertices;
            mesh.normals  = Normals;
            mesh.uv       = UV;
            for (var i = 0; i < Triangles.Length; i++)
            {
                mesh.SetTriangles(Triangles[i], i, true);
            }
            Bounds = mesh.bounds;

            var renderer = GameObject.AddComponent <MeshRenderer>();

            renderer.materials = original.GetComponent <MeshRenderer>().materials;

            var filter = GameObject.AddComponent <MeshFilter>();

            filter.mesh = mesh;

            var collider = GameObject.AddComponent <MeshCollider>();

            collider.convex = true;

            var rigidbody   = GameObject.AddComponent <Rigidbody>();
            var meshDestroy = GameObject.AddComponent <MeshDestroy>();

            meshDestroy.CutCascades  = original.CutCascades;
            meshDestroy.ExplodeForce = original.ExplodeForce;

            //Custom properties
            GameObject.layer = 11; //ignore Player
            if (canCutChild)
            {
                var enemyScript = GameObject.AddComponent <DummyEnemy>();
                enemyScript.vfx = original.GetComponent <DummyEnemy>().vfx;
            }
            Destroy(GameObject, original.childernLifeTime);
        }
Exemple #8
0
        public void MakeGameobject(MeshDestroy original)
        {
            GameObject = new GameObject(original.name);
            GameObject.transform.position   = original.transform.position;
            GameObject.transform.rotation   = original.transform.rotation;
            GameObject.transform.localScale = original.transform.localScale;

            var mesh = new Mesh();

            mesh.name = original.GetComponent <MeshFilter>().mesh.name;

            mesh.vertices = Vertices;
            mesh.normals  = Normals;
            mesh.uv       = UV;
            for (var i = 0; i < Triangles.Length; i++)
            {
                mesh.SetTriangles(Triangles[i], i, true);
            }
            Bounds = mesh.bounds;

            var renderer = GameObject.AddComponent <MeshRenderer>();

            renderer.materials = original.GetComponent <MeshRenderer>().materials;

            var filter = GameObject.AddComponent <MeshFilter>();

            filter.mesh = mesh;

            var collider = GameObject.AddComponent <MeshCollider>();

            try
            {
                collider.convex = true;

                var rigidbody = GameObject.AddComponent <Rigidbody>();
            }
            catch (Exception e)
            {
                Debug.Log("Mesh Destroy error: " + e.Message);
            }
            //var meshDestroy = GameObject.AddComponent<MeshDestroy>();
            //meshDestroy.CutCascades = original.CutCascades;
            //meshDestroy.ExplodeForce = original.ExplodeForce;
        }
    void Start()
    {
#if UNITY_ANDROID && UNITY_EDITOR
        variableJoystick = GameObject.Find("Movement Joystick").GetComponent <VariableJoystick>();
#endif
        _meshController = GetComponentInChildren <MeshDestroy>();

        int playerLayerMask = LayerMask.NameToLayer("Player");
        raycastLayers = 1 << playerLayerMask;
        raycastLayers = ~raycastLayers;

        _charController          = GetComponent <CharacterController>();
        _camController           = playerCamera.parent.GetComponent <CameraFollow>();
        _animator                = GetComponent <Animator>();
        _playerHealth            = GetComponent <Health>();
        _playerHealth.healthFill = GameObject.Find("HealthFill").GetComponent <Image>();

        isAiming = false;
    }
Exemple #10
0
        public void MakeGameobject(MeshDestroy original)
        {
            _gameObject = new GameObject(original.name);
            _gameObject.transform.position   = original.transform.position;
            _gameObject.transform.rotation   = original.transform.rotation;
            _gameObject.transform.localScale = original.transform.localScale;

            var mesh = new Mesh();

            mesh.name = original.GetComponent <MeshFilter>().mesh.name;

            mesh.vertices = Vertices;
            mesh.normals  = Normals;
            mesh.uv       = UV;
            for (var i = 0; i < Triangles.Length; i++)
            {
                mesh.SetTriangles(Triangles[i], i, true);
            }
            Bounds = mesh.bounds;

            var renderer = _gameObject.AddComponent <MeshRenderer>();

            renderer.materials = original.GetComponent <MeshRenderer>().materials;

            var filter = _gameObject.AddComponent <MeshFilter>();

            filter.mesh = mesh;

            var collider = _gameObject.AddComponent <MeshCollider>();

            collider.convex = true;

            var rigidbody   = _gameObject.AddComponent <Rigidbody>();
            var meshDestroy = _gameObject.AddComponent <MeshDestroy>();

            meshDestroy.CutCascades  = original.CutCascades;
            meshDestroy.ExplodeForce = original.ExplodeForce;
            _gameObject.SetActive(false);
            _gameObject.transform.parent = original.transform;
            original.fragments.Add(_gameObject);
        }
Exemple #11
0
        public void MakeGameobject(MeshDestroy original)
        {
            GameObject = new GameObject(original.name);
            GameObject.transform.position   = original.transform.position;
            GameObject.transform.rotation   = original.transform.rotation;
            GameObject.transform.localScale = original.transform.localScale;

            var mesh = new Mesh();

            mesh.name = original.GetComponent <MeshFilter>().mesh.name;

            mesh.vertices = Vertices;
            mesh.normals  = Normals;
            mesh.uv       = UV;
            for (var i = 0; i < Triangles.Length; i++)
            {
                mesh.SetTriangles(Triangles[i], i, true);
            }
            Bounds = mesh.bounds;


            var renderer = GameObject.AddComponent <MeshRenderer>();

            renderer.materials = original.GetComponent <MeshRenderer>().materials;

            var filter = GameObject.AddComponent <MeshFilter>();

            filter.mesh = mesh;

            var collider = GameObject.AddComponent <MeshCollider>();

            collider.convex = true;

            var rigidbody = GameObject.AddComponent <Rigidbody>();
            // var meshDestroy = GameObject.AddComponent<SelfDestroy>(); // убираю его чтоб на завис комп и чтоб не ломалось дальше
            //   meshDestroy.CutCascades = original.CutCascades;
            // meshDestroy.ExplodeForce = original.ExplodeForce;
        }