コード例 #1
0
    void LateUpdate()
    {
        curDistance = Vector3.Distance(player.position, thisTransform.position);


        if (curDistance < distanceUntilCircle)
        {
            if (isHelicopter)
            {
                /*	if (Physics.SphereCast (thisTransform.position,50f, thisTransform.right, out hit, 7f))
                 *              turningDirection -= 0.005f;
                 *
                 *      if (Physics.SphereCast (thisTransform.position,50f, thisTransform.right * -1, out hit, 7f))
                 *              turningDirection += 0.005f;*/


                /*	if (Physics.SphereCast (thisTransform.position, 8f, thisTransform.rotation * Vector3.forward, out hit, 6f))
                 *              turningDirection += 0.1f;
                 *      else
                 *              turningDirection = 0f;
                 * //		thisTransform.position += thisTransform.rotation * Vector3.forward;*/

                thisTransform.position = Vector3.Lerp(thisTransform.position, new Vector3(Mathf.Cos(Time.time) * circleRadius + xOffset, upDistance, Mathf.Sin(Time.time) * circleRadius + zOffset) + player.position, Time.deltaTime * orbiterSpeed);

                //		thisTransform.position += Vector3.forward * turningDirection;
                //if (Physics.SphereCast (thisTransform.position, 20f, thisTransform.ba, out hit, 7f))
                //		thisTransform.localPosition += new Vector3 (0, 0, 10);//thisTransform.forward;
            }
            else
            {
                thisTransform.position = Vector3.Lerp(thisTransform.position, new Vector3(Mathf.Cos(Time.time) * circleRadius + xOffset, upDistance, Mathf.Sin(Time.time) * circleRadius + zOffset) + player.position, Time.deltaTime * orbiterSpeed);
            }



            timer += Time.deltaTime;



            transform.LookAt(player.position);


            if (timer > bulletDelay)
            {
                if (isHelicopter)
                {
                    EnemyBulletManager.BulletPosition(thisTransform.TransformPoint(Vector3.forward * 1.5f), transform.rotation, 3f);                        //Quaternion.LookRotation ((player.position - thisTransform.position) + player.forward * zOffset ), 0.3f);
                }
                else
                {
                    EnemyBulletManager.BulletPosition(thisTransform.TransformPoint(Vector3.forward * 1.5f), transform.rotation, bulletSpeed);                                      // Quaternion.LookRotation ((player.position - thisTransform.position) + player.forward * zOffset), 0.3f);
                }
                timer = 0;
            }
            return;
        }
        Vector3 dir = Vector3.Normalize(player.position - thisTransform.position);

        thisTransform.Translate(dir * speed);
    }
コード例 #2
0
    IEnumerator OnUpdate()
    {
        while (true)
        {
            yield return(new WaitForSeconds(bulletDelay + Random.Range(-magnitudeOffsetDelay, magnitudeOffsetDelay)));


            if (isDirectShoot)
            {
                EnemyBulletManager.BulletPosition(transform.TransformPoint(Vector3.forward * 1f), transform.rotation, bulletSpeed);
            }
            else
            {
                EnemyBulletManager.BulletPosition(transform.TransformPoint(Vector3.forward * 1.5f), Quaternion.LookRotation(playerTarget.transform.position - transform.position), bulletSpeed);
            }
        }
    }