private void Update() { if (starGameManagerRef.GamePaused) { return; } if (RotateObjectYaw != null) { Vector3 aim = target.transform.position; Vector3 dir = aim - RotateObjectYaw.transform.position; dir.Normalize(); float yAngle = Mathf.Atan2(dir.x, dir.z) * Mathf.Rad2Deg + correctionAngle; //Debug.Log(yAngle); // Quaternion desiredRot = Quaternion.Euler(0, yAngle, 0); Quaternion desiredRot = Quaternion.Euler(0, yAngle, 0); // RotateObjectYaw.transform.rotation = Quaternion.RotateTowards(RotateObjectYaw.transform.rotation, desiredRot, rotSpeed * Time.deltaTime); RotateObjectYaw.transform.rotation = Quaternion.RotateTowards(RotateObjectYaw.transform.rotation, desiredRot, workingSpeed * Time.deltaTime); workingSpeed = rotSpeed; } // ----------------------------------------------------- if (RotateObjectPitch != null) { Vector3 relativePosPitch = target.position - RotateObjectPitch.transform.position; Quaternion rotationPitch = Quaternion.LookRotation(relativePosPitch); Vector3 useRotation = rotationPitch.eulerAngles; float NewAngle = rotationPitch.eulerAngles.x; NewAngle = (NewAngle > 180) ? NewAngle - 360 : NewAngle; if (PitchClampMax != 0 && PitchClampMin != 0) { NewAngle = Mathf.Clamp(NewAngle, PitchClampMin, PitchClampMax); } if (InvertPitch) { NewAngle = -NewAngle; } // RotateObjectPitch.transform.localRotation = Quaternion.Euler(NewAngle, 0,0); // this snapped back after player death RotateObjectPitch.transform.localRotation = Quaternion.Slerp(RotateObjectPitch.transform.localRotation, Quaternion.Euler(NewAngle, 0, 0), Time.deltaTime * (rotSpeed / 8)); } if (FireProjectile) { FireProjectile = false; if (StarEnemy != null) { StarEnemy.fireProjectile(starGameManagerRef.ActorsParent); } } } // end update
IEnumerator RandomDoorController() { ShuffleDoorTimes(); yield return(new WaitForSeconds(DelayBetweenDoorsOpenUse)); while (starGameManagerRef.GamePaused) { yield return(null); } List <GameObject> doorTypeList = GreenSpawnDoors; int selectDoorType = Random.Range(0, 3); if (selectDoorType == 0) { ArmDoorControl(); } else { if (selectDoorType == 1) { doorTypeList = PurpleSpawnDoors; } GameObject randomDoor = (doorTypeList[Random.Range(0, doorTypeList.Count)]); StartCoroutine(DoorOpening(randomDoor, "")); // tell it to spawn as well, either here or in it's sub-controller starEnemy currentStarEnemy = randomDoor.GetComponentInChildren <starEnemy>(); currentStarEnemy.ProjectileFiringEnabled = true; currentStarEnemy.fireProjectile(null); StartCoroutine(CloseDoorTimer(randomDoor)); } StartCoroutine(RandomDoorController()); }