示例#1
0
    void OnTriggerEnter(Collider other)
    {
        //Detect if Fireball hits player
        C_PlayerCharacter player = other.GetComponent <C_PlayerCharacter> ();

        if (player != null)
        {
            Debug.Log("Player hit");
            player.Hurt(1);
        }
        Debug.Log("hit other object");
        Destroy(this.gameObject);
    }
    // Update is called once per frame
    void Update()
    {
        if (alive)
        {
            //move enemy forward
            transform.Translate(0, 0, speed * Time.deltaTime);

            Ray        ray = new Ray(transform.position, transform.forward);
            RaycastHit hit;

            if (Physics.SphereCast(ray, 0.75f, out hit))
            {
                GameObject        hitObj     = hit.transform.gameObject;
                C_PlayerCharacter playerChar = hitObj.GetComponent <C_PlayerCharacter>();
                if (shouldShoot == true)
                {
                    if (playerChar != null)
                    {
                        //shoot player
                        if (fireball == null)
                        {
                            fireball = Instantiate(fireballPrefab) as GameObject;
                            fireball.transform.position = transform.TransformPoint(Vector3.forward * 1.5f);
                            fireball.transform.rotation = transform.rotation;
                        }
                    }
                    //Rotate enemy when almost hit wall/ obstacle
                    else if (hit.distance < obstacleDistance)
                    {
                        float angle = Random.Range(-110, 110);
                        transform.Rotate(0, angle, 0);
                    }
                    //To prevent player from instant death
                    shouldShoot = false;
                    StartCoroutine(shouldShootTimer());
                }
            }
        }
    }