public override void SlowUpdate() { base.SlowUpdate(); ski.Update(); if (Input.GetKeyDown(KeyCode.F12)) { ui.ShowHide(); } if (Input.GetMouseButtonDown(3)) { if (lockCamera) { watcher.sensetive = Vector2.one; } lockCamera = !lockCamera; } if (lockCamera) { SetAim(new Vector2(Mathf.Clamp(aimPoint.x + UInput.RotateX() * .02f / Screen.width * Screen.height, .1f, .9f), Mathf.Clamp(aimPoint.y + UInput.RotateY() * -.02f / Screen.height * Screen.width, .1f, .9f))); watcher.sensetive = new Vector2(Mathf.Abs(aimPoint.x - .5f) / .4f, Mathf.Abs(aimPoint.y - .5f) / .4f); watcher.sensetive = Vector2.Scale(watcher.sensetive, watcher.sensetive); } bFire = UInput.Fire() != 0 || everyTimeFire; bRotate = UInput.Fire2() != 0 || everyTimeRotate; watcher.Update(); // rotate camera manually because else it does bad ui.Update(); // Same reason as ^ moveDirection = camera.transform.rotation; firePoints.Clear(); var point = new Vector3(Screen.width * aimPoint.x, Screen.height * aimPoint.y); var ray = camera.ScreenPointToRay(point); Debug.DrawRay(ship.tempTransform.position, BattleBehaviour.current.navigation.GetMovePoint(ship.tempTransform.position, ship.tempTransform.position + ray.direction * 10000) - ship.tempTransform.position, Color.blue); RaycastHit hit; if (Physics.SphereCastAll(ray, 10f, 100000).WithMin(h => (h.point - camera.transform.position).sqrMagnitude, h => !ShipIdentification.IsThisShip(h.transform, ship), out hit)) { float distance = Vector3.Distance(hit.point, ship.transform.position); if (UInput.Fire() != 0) { firePoints.AddPoint(hit.point); } var si = hit.transform.GetComponentInParent <ShipIdentification>(); if (si != null) { var s = si.ship; if (!s.alive) { ui.GetAim().SetTarget(AimTarget.Neutral, distance); } else if (s.team != ship.team) { ui.GetAim().SetTarget(AimTarget.Enemy, distance); if (Input.GetKeyDown(KeyCode.Space)) { lockedEnemy = s; } } else { ui.GetAim().SetTarget(AimTarget.Friend, distance); } } else { ui.GetAim().SetTarget(AimTarget.Neutral, distance); } } else { ui.GetAim().SetTarget(AimTarget.None, 0); } if (lockedEnemy != null && lockedEnemy.alive) { firePoints.AddPoint(lockedEnemy.tempTransform.position); } uiBehaviour.targetView.SetTargets(firePoints.GetFirePoints().Select(p => p.point)); SetAim(); if (Input.GetKeyDown(KeyCode.LeftControl)) { everyTimeFire = !everyTimeFire; } if (Input.GetKeyDown(KeyCode.LeftAlt)) { everyTimeRotate = !everyTimeRotate; } }