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); }
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); } } }