private void Runnable() { if (!_isRunnig) { try { _isRunnig = true; Vector2 position = _trajectory.GenerateCoord(); MainThreadRunner.AddTask(() => { HOTween.Kill(_aircraftView.transform); var velocity = new Vector3(position.x, position.y, 0) - _aircraftView.transform.localPosition; float angle = Mathf.Atan2(velocity.y, velocity.x) * Mathf.Rad2Deg; Quaternion q = Quaternion.AngleAxis(angle, Vector3.forward); _aircraftView.transform.rotation = q; //Debug.LogWarning("rotation" + _aircraftView.transform.rotation.x + " " + _aircraftView.transform.rotation.y + " " + _aircraftView.transform.rotation.z); HOTween.To(_aircraftView.transform, Constants.PulseRepetitionInterval / 1000.0f, new TweenParms().Prop("localPosition", new Vector3(position.x, position.y, 0)).Ease(EaseType.Linear)); }); if (ChangePosition != null) { ChangePosition(position); } _isRunnig = false; } catch (Exception e) { Debug.LogWarning(" AircraftController Runnable" + e.ToString()); } } }