void updateLinearDrag() { float sinx = Mathf.Abs(Mathf.Sin(_rigidbody.rotation.eulerAngles.x * Mathf.PI / 180)); float cosx = Mathf.Abs(Mathf.Cos(_rigidbody.rotation.eulerAngles.x * Mathf.PI / 180)); float sinz = Mathf.Abs(Mathf.Sin(_rigidbody.rotation.eulerAngles.z * Mathf.PI / 180)); float cosz = Mathf.Abs(Mathf.Cos(_rigidbody.rotation.eulerAngles.z * Mathf.PI / 180)); float cosy = Mathf.Abs(Mathf.Cos(_rigidbody.rotation.eulerAngles.y * Mathf.PI / 180)); float siny = Mathf.Abs(Mathf.Sin(_rigidbody.rotation.eulerAngles.y * Mathf.PI / 180)); float velocityForward = Mathf.Pow(Mathf.Pow(_rigidbody.velocity.x, 2) + Mathf.Pow(_rigidbody.velocity.z, 2), 0.5f); float dragForward = (1 / 2f) * Mathf.Pow(velocityForward, 2) * _constval.GetAirDensity() * _constval.GetClin() * sinx * cosz * DroneWedth * DroneLength; float dragUPward = (1 / 2f) * Mathf.Pow(_rigidbody.velocity.y, 2) * _constval.GetAirDensity() * _constval.GetClin() * cosx * cosz * DroneWedth * DroneLength; float dragSwerve = (1 / 2f) * Mathf.Pow(velocityForward, 2) * _constval.GetAirDensity() * _constval.GetClin() * sinz * DroneWedth * DroneLength; _rigidbody.drag = Mathf.Pow((Mathf.Pow(dragForward, 2) + Mathf.Pow(dragUPward, 2) + Mathf.Pow(dragSwerve, 2)), 0.5f); // print (_rigidbody.drag); }
void valueInitialize() { _Acceleration = 0; oldXRotation = transform.rotation.eulerAngles.x; oldYRotation = transform.rotation.eulerAngles.y; oldZRotation = transform.rotation.eulerAngles.z; _gravity = _constval.GetGravity(); propellerDiameter = _constval.GetPropellerDiameter(); propellerVelocity = _constval.GetAngularVelocity(); maxRPM = _constval.GetMaxRPM(); airDensity = _constval.GetAirDensity(); thrustCoefficient = _constval.GetC_T(); powerCoefficient = _constval.GetC_Pow(); linearDragCoefficient = _constval.GetClin(); AngularDragCoefficient = _constval.GetC_AngularDrag(); }