Пример #1
0
    void Shoot()
    {
        timer = 0f;

        gunLight.enabled = true;
        gunLine.enabled  = true;
        AudioSource gunshot = GetComponent <AudioSource> ();

        gunshot.Play();

        gunLine.SetPosition(0, transform.position);
        shootRay.origin    = transform.position;
        shootRay.direction = transform.forward;

        if (Physics.Raycast(shootRay, out shootHit, range, shootableMask))
        {
            NPCScript enemyHealth = shootHit.collider.GetComponent <NPCScript>();
            Rigidbody enemyBody   = shootHit.collider.GetComponent <Rigidbody> ();


            enemyHealth.TakeDamage(shootHit.point);
            enemyHealth.ApplyForce(enemyBody, shootHit);
            countText.text = points.ToString();

            gunLine.SetPosition(1, shootHit.point);
        }
        else
        {
            gunLine.SetPosition(1, shootRay.origin + shootRay.direction * range);
        }
    }
Пример #2
0
    // Update is called once per frame
    void OnCollisionEnter(Collision col)
    {
        Vector3 enemyposition = enemy.transform.position;

        NPCScript enemyHealth = enemy.GetComponent <Collider>().GetComponent <NPCScript>();

        enemyHealth.TakeDamage(enemyposition);
    }
Пример #3
0
    void Update()
    {
        GameObject closest  = null;
        float      distance = Mathf.Infinity;
        Vector3    position = transform.position;

        foreach (GameObject target in targets)
        {
            if (target != null)
            {
                Vector3 diff        = target.transform.position - position;
                float   curDistance = diff.sqrMagnitude;
                if (curDistance < distance)
                {
                    closest  = target;
                    distance = curDistance;
                    enemy    = closest.transform;
                }
            }
        }

        FollowPlayer follow        = GetComponent <FollowPlayer> ();
        Vector3      enemyposition = enemy.transform.position;

        //if G in clicked attack enemies within distance
        if (Input.GetKey(KeyCode.G))
        {
            if (enemy)
            {
                follow.isFollowing = false;
                Vector3 offset = enemy.position - myTransform.position;
                float   sqrLen = offset.sqrMagnitude;
                if (sqrLen < closeDistance * closeDistance)
                {
                    myTransform.LookAt(enemy);
                    anim.SetBool("attack", true);
                    NPCScript enemyHealth = enemy.GetComponent <Collider>().GetComponent <NPCScript>();
                    if (enemyHealth != null)
                    {
                        enemyHealth.TakeDamage(enemyposition);
                    }
                }
                else
                {
                    anim.SetBool("attack", false);
                    myTransform.Translate(Vector3.forward * 8 * Time.deltaTime);
                    myTransform.LookAt(enemy);
                }
            }
        }
    }