private void FixedUpdate() { direction_main = ship_direction_point.position - transform.position; if (Input.GetMouseButton(0) || Input.touchCount > 0) { // Расчет точки касания и направлений var rbody = GetComponent <Rigidbody2D>(); Vector2 position_touch = rbody.position; if (Input.touchCount > 0) { position_touch = Camera.main.ScreenToWorldPoint(Input.GetTouch(0).position); } else if (Input.GetMouseButton(0)) { position_touch = Camera.main.ScreenToWorldPoint(Input.mousePosition); } position_touch = -(rbody.position - position_touch); var direction = GetDirection(position_touch); var angle = Vector2.SignedAngle(direction, direction_main); // Расчитывание углов для погашения вращения/ускорения var rotation_angle = Mathf.Abs(angle) / 180; var velocity_angle = 1 - rotation_angle; // Применение физики к игроку if ((Mathf.Abs(rbody.angularVelocity) < rotation_max) && (angle != 0)) { rbody.AddTorque(-rotation_inc * Mathf.Sign(angle) * rotation_angle); } if (rbody.velocity.magnitude < speed_max) { rbody.AddForce(direction_main * speed_inc * velocity_angle); } // Генерация частиц ship_particle.Generate(angle, true); } else { // Нет газа - холостой ход ship_particle.Generate(0, false); } }