private void UpdateWheels() { Vector3 pos = Vector3.zero; Quaternion rot = Quaternion.identity; wheelColliderRightFront.GetWorldPose(out pos, out rot); wheelRightFront.position = pos; wheelRightFront.rotation = rot; wheelColliderLeftFront.GetWorldPose(out pos, out rot); wheelLeftFront.position = pos; wheelLeftFront.rotation = rot; wheelColliderRightBack.GetWorldPose(out pos, out rot); wheelRightBack.position = pos; wheelRightBack.rotation = rot; wheelColliderLeftBack.GetWorldPose(out pos, out rot); wheelLeftBack.position = pos; wheelLeftBack.rotation = rot ; }
void FixedUpdate() { if (Time.realtimeSinceStartup - lastUpdate < 1f / 60f) { return; } lastUpdate = Time.realtimeSinceStartup; if (_wheelModel && _wheelCollider) { Vector3 pos = new Vector3(0, 0, 0); Quaternion quat = new Quaternion(); _wheelCollider.GetWorldPose(out pos, out quat); _wheelModel.transform.rotation = quat; _wheelModel.transform.localRotation *= Quaternion.Euler(localRotOffset); _wheelModel.transform.position = pos; WheelHit wheelHit; _wheelCollider.GetGroundHit(out wheelHit); } }
// 対応する視覚的なホイールを見つけます // Transform を正しく適用します public void ApplyLocalPositionToVisuals(WheelCollider collider) { //Wheelコライダーの子要素がない場合は処理終了。 if (collider.transform.childCount == 0) { return; } //タイヤビジュアルを取得 Transform visualWheel = collider.transform.GetChild(0); //コライダーの位置と回転を取得。 Vector3 position; Quaternion rotation; collider.GetWorldPose(out position, out rotation); //タイヤビジュアルに、コライダーの値を設定。 //単純な車の場合、Z軸を90f回転させる必要がある visualWheel.transform.position = position; visualWheel.transform.rotation = rotation * Quaternion.Euler(0f, 0f, 90f); }
//Wheel에 Tire 모델을 맞춰주는 함수. private void SetWheelShape(WheelCollider Wheel) { if (WheelShape) { Quaternion q; Vector3 p; Wheel.GetWorldPose(out p, out q); Transform ShapeTransform = Wheel.transform.GetChild(0); if (Wheel.tag.Contains("RightTire")) { ShapeTransform.rotation = q * Quaternion.Euler(0, 0, 90); ShapeTransform.position = p; } else { ShapeTransform.position = p; ShapeTransform.rotation = q * Quaternion.Euler(0, 180, 90);; } } }
public void HandleWheel(IP_BaseAirplane_Input input) { if (WheelCol) { //Place the Wheel in the correct position WheelCol.GetWorldPose(out worldPos, out worldRot); if (wheelGraphic) { wheelGraphic.rotation = worldRot; wheelGraphic.position = worldPos; } //Handle the Braking of the Wheel if (isBraking) { if (input.Brake > 0.1f) { finalBrakeForce = Mathf.Lerp(finalBrakeForce, input.Brake * brakePower, Time.deltaTime); WheelCol.brakeTorque = finalBrakeForce; } else { finalBrakeForce = 0f; WheelCol.brakeTorque = 0f; WheelCol.motorTorque = 0.000000000001f; } } //Handle steering of the wheel if (isSteering) { finalSteerAngle = Mathf.Lerp(finalSteerAngle, -input.Yaw * steerAngle, Time.deltaTime * steerSmoothSpeed); WheelCol.steerAngle = finalSteerAngle; } //Check to see if the wheel is grounded isGrounded = WheelCol.isGrounded; } }
/// <summary> /// Applies Wheel Collider rotation and position to their visual elements /// </summary> /// <param name="collider">Wheel Collider that the visual is attached to</param> private static void ApplyLocalPositionToVisuals(WheelCollider collider) { if (collider.transform.childCount == 0) { return; } Transform visualWheel = collider.transform.GetChild(0); Vector3 position; Quaternion rotation; collider.GetWorldPose(out position, out rotation); visualWheel.transform.position = position; visualWheel.transform.rotation = rotation; Vector3 euler = visualWheel.transform.rotation.eulerAngles; //visual wheel rotation fix - sets y rotation to 90 visualWheel.transform.rotation = Quaternion.Euler(euler.x, euler.y, 90); }
private void MoveWheel(Transform wheel, WheelCollider collider, Vector3 origPos, float theta, Quaternion Q, bool steering) { if (wheel.localPosition != origPos) { wheel.localPosition = origPos; } if (steering) { wheel.rotation = Quaternion.RotateTowards(wheel.rotation, Q, Time.fixedDeltaTime * 50f); } wheel.transform.Rotate(Vector3.right, theta, Space.Self); Vector3 pos; Quaternion rot; collider.GetWorldPose(out pos, out rot); wheel.position = pos; // this does not work because we move our NPCs without forces // wheel.rotation = rot; }
void Update() { Quaternion flq; Vector3 flv; WheelFL.GetWorldPose(out flv, out flq); FL.transform.position = flv; FL.transform.rotation = flq; Quaternion Blq; Vector3 Blv; WheelBL.GetWorldPose(out Blv, out Blq); BL.transform.position = Blv; BL.transform.rotation = Blq; Quaternion frq; Vector3 frv; WheelFR.GetWorldPose(out frv, out frq); FR.transform.position = frv; FR.transform.rotation = frq; Quaternion Brq; Vector3 Brv; WheelBR.GetWorldPose(out Brv, out Brq); BR.transform.position = Brv; BR.transform.rotation = Brq; if (photonView.IsMine) { photonView.RPC("ChangeCar", RpcTarget.AllBuffered); } }
/// <summary> /// Updates the wheel transforms. /// </summary> void UpdateWheelTransforms() { if (networkId.IsMine) { Quaternion rotation; Vector3 position; frontLeftCollider.GetWorldPose(out position, out rotation); frontLeftTransform.position = position; frontLeftTransform.rotation = rotation; frontRightCollider.GetWorldPose(out position, out rotation); frontRightTransform.position = position; frontRightTransform.rotation = rotation; // update the front wheel rotation for generic tracker frontWheelRot = rotation; rearLeftCollider.GetWorldPose(out position, out rotation); rearLeftTransform.position = position; rearLeftTransform.rotation = rotation; rearRightCollider.GetWorldPose(out position, out rotation); rearRightTransform.position = position; rearRightTransform.rotation = rotation; // update the rear wheel rotation for generic tracker rearWheelRot = rotation; } else { // apply the rotation updates for remote copies frontLeftTransform.rotation = frontWheelRot; frontRightTransform.rotation = frontWheelRot; rearLeftTransform.rotation = rearWheelRot; rearRightTransform.rotation = rearWheelRot; } }
private void Update() { Quaternion frontWheelLeft_quaternion; Vector3 frontWheelLeft_vector3; frontWheelLeft_collider.GetWorldPose(out frontWheelLeft_vector3, out frontWheelLeft_quaternion); frontWheelLeft_mesh.transform.position = frontWheelLeft_vector3; frontWheelLeft_mesh.transform.localRotation = frontWheelLeft_quaternion; //frontWheelLeft_mesh.transform.Rotate(0, frontWheelLeft_quaternion.y, 0); //Debug.Log(frontWheelLeft_quaternion.z); Quaternion frontWheelRight_quaternion; Vector3 frontWheelRight_vector3; frontWheelRight_collider.GetWorldPose(out frontWheelRight_vector3, out frontWheelRight_quaternion); frontWheelRight_mesh.transform.position = frontWheelRight_vector3; frontWheelRight_mesh.transform.localRotation = frontWheelRight_quaternion; //frontWheelRight_mesh.transform.Rotate(0, frontWheelRight_quaternion.y, 0); //Debug.Log(frontWheelRight_quaternion.z); Quaternion backWheelLeft_quaternion; Vector3 backWheelLeft_vector3; backWheelLeft_collider.GetWorldPose(out backWheelLeft_vector3, out backWheelLeft_quaternion); backWheelLeft_mesh.transform.position = backWheelLeft_vector3; backWheelLeft_mesh.transform.localRotation = new Quaternion(backWheelLeft_quaternion.x, backWheelLeft_quaternion.y, backWheelLeft_quaternion.z - 90, 0); //backWheelLeft_mesh.transform.Rotate(0, backWheelLeft_quaternion.y, 0); Quaternion backWheelRight_quaternion; Vector3 backWheelRight_vector3; backWheelRight_collider.GetWorldPose(out backWheelRight_vector3, out backWheelRight_quaternion); backWheelRight_mesh.transform.position = backWheelRight_vector3; backWheelRight_mesh.transform.localRotation = backWheelRight_quaternion; //backWheelRight_mesh.transform.Rotate(0, backWheelRight_quaternion.y, 0); //Debug.Log(frontWheelLeft_mesh.transform.rotation); }
public void FixedUpdate() { float motor = maxMotorTorque * Input.GetAxis("Vertical"); float steering = maxSteeringAngle * Input.GetAxis("Horizontal"); wc.steerAngle = steering; wc.motorTorque = motor; Vector3 position; Quaternion rotation; wc.GetWorldPose(out position, out rotation); if (rotateOnly) { rotation.eulerAngles = new Vector3(wc.rpm, 0f, 0f); wheel.transform.localRotation = rotation; } else { rotation.eulerAngles = new Vector3(wc.rpm, -Mathf.Clamp(steering, -maxSteeringAngle, maxSteeringAngle), 0f); wheel.transform.localRotation = rotation; } }
// Update is called once per frame void Update() { if (wheel == null) { return; } if (model != null) { Vector3 wheelPos = Vector3.zero; Quaternion wheelQuat = Quaternion.identity; wheel.GetWorldPose(out wheelPos, out wheelQuat); model.position = wheelPos; model.rotation = wheelQuat; } wheel.steerAngle = steerInput * maxAngle; ApplyTorque(); ApplyBrake(); PlayEffects(); }
/// <summary> /// Sets the position and rotation of the visual mesh to match the wheel collider /// </summary> /// <param name="collider"></param> /// <param name="wheelMesh"></param> public void ApplyLocalPositionToVisuals(WheelCollider collider, Transform wheelMesh, float wheelOffset) { Vector3 position; Quaternion rotation; //get world postion and rotation from collider collider.GetWorldPose(out position, out rotation); //set wheel position in world space wheelMesh.position = position; //convert world space to local space Vector3 LocalPosition = wheelMesh.InverseTransformPoint(wheelMesh.transform.position); //add wheel offset LocalPosition = new Vector3(LocalPosition.x + wheelOffset, LocalPosition.y, LocalPosition.z); //re-apply position in world space wheelMesh.position = wheelMesh.TransformPoint(LocalPosition); //apply rotation wheelMesh.rotation = rotation; }
private void LateUpdate() { // Get position and rotation feom WheelCollider WheelCollider.GetWorldPose(out Position, out Rotation); //Position translation to local space Position = WheelCollider.transform.InverseTransformPoint(Position) + OffsetPosition; Position -= CenterArcPoint; //Find Y of wheel position var offsetY = Position.y - MaxLengthOnDistance * WheelCollider.suspensionDistance; if (offsetY < ArmLength && offsetY > -ArmLength) { //Calcelate X, According to the formula X*X + Y*Y = R*R Position.x = OffsetPosition.x + Mathf.Sqrt((ArmLength * ArmLength) - (offsetY * offsetY)); } if (Invertion) { Position.x = -Position.x; } transform.localPosition = Position; }
public void OnUpdate(float motorTorque, float rotateFactor) { // 转弯 if (isSteerWheel) { wheelCollider.steerAngle = _controller.inputX * rotateFactor * (_controller.inputX > 0f ? _steerRight : _steerLeft); } // 驱动 if (isMotorWheel) { wheelCollider.motorTorque = motorTorque * _motorTorqueScale; } // 刹车 wheelCollider.brakeTorque = _controller.inputBrake * _mass * massToBrakeRatio; // 模型 wheelCollider.GetWorldPose(out _pos, out _rot); _wheelModel.position = _pos; _wheelModel.rotation = _rot; }
public void movetoTgt() { Debug.Log("Moving to tgt"); Vector3 rWheelLook; Quaternion rWheelRot; Vector3 lWheelLook; Quaternion lWheelRot; var tgtRelativePos = gameObject.transform.InverseTransformPoint(target.transform.position); var steerAngle = tgtRelativePos.x / tgtRelativePos.magnitude * maxSteer; if (currentSpeed < topSpeed) { rWheel.motorTorque = 250f; lWheel.motorTorque = 250f; rWheel.brakeTorque = 0F; lWheel.brakeTorque = 0F; } else { rWheel.motorTorque = 0f; lWheel.motorTorque = 0f; } rWheel.steerAngle = steerAngle; lWheel.steerAngle = steerAngle; rWheel.GetWorldPose(out rWheelLook, out rWheelRot); rWheelGeo.transform.rotation = rWheelRot; rWheelGeo.transform.position = rWheelLook; lWheel.GetWorldPose(out lWheelLook, out lWheelRot); lWheelGeo.transform.rotation = lWheelRot; lWheelGeo.transform.position = lWheelLook; }
public void HandleWheel(BaseAirplane_Input input, bool handbrake) { if (WheelCol) { WheelCol.GetWorldPose(out worldPos, out worldRot); if (WheelGraphic) { WheelGraphic.rotation = worldRot; WheelGraphic.position = worldPos; } if (isBraking) { if (handbrake) { finalBrakeForce = Mathf.Lerp(finalBrakeForce, 1f * brakePower, Time.deltaTime); WheelCol.brakeTorque = finalBrakeForce; } else if (input.Brake > 0.1f) { finalBrakeForce = Mathf.Lerp(finalBrakeForce, input.Brake * brakePower, Time.deltaTime); WheelCol.brakeTorque = finalBrakeForce; } else { finalBrakeForce = 0f; WheelCol.brakeTorque = 0f; WheelCol.motorTorque = 0.000000001f; } } if (isSteering) { WheelCol.steerAngle = -input.Yaw * steeringAngle; } } }
public float maxSteeringAngle; // ホイールのハンドル最大角度 public void ApplyLocalPositionToVisuals(WheelCollider collider) { if (collider.transform.childCount == 0) { return; } Transform visualWheel = collider.transform.GetChild(0); // コライダーの位置と回転を取得。 Vector3 position; Quaternion rotation; collider.GetWorldPose(out position, out rotation); visualWheel.transform.position = position; /********************** * // タイヤにシリンダーを使ってる場合、Z軸を90度回転させないとタイヤが横向きになってしまうためZ軸に90度回転を常に加える * // タイヤように作られた3Dモデルの場合 * Quaternion.Euler (0f, 0f, 90f) の部分は必要ない ***********************/ visualWheel.transform.rotation = rotation * Quaternion.Euler(0f, 0f, 90f); }
public void ApplyLocalPositionToVisuals(WheelCollider collider) { if (collider.transform.childCount == 0) { return; } Transform visualWheel = collider.transform.GetChild(0); Vector3 position; Quaternion rotation; collider.GetWorldPose(out position, out rotation); Vector3 wheelPos = visualWheel.transform.position; wheelPos.y = position.y; // track vertical position (suspension) visualWheel.transform.position = wheelPos; visualWheel.transform.rotation = rotation; // Need to do this otherwise the wheels will have the wrong rotation. visualWheel.Rotate(-90, 0, -90); }
// 轮胎模型 public void tireModelControl() { foreach (var wheel in this.wheels) { WheelCollider wc = wheel.collider; Vector3 position; Quaternion rotation; wc.GetWorldPose(out position, out rotation); wheel.tire_model.transform.position = position; wheel.tire_model.transform.rotation = rotation; // 为了防止轮胎从车体飞出,控制它不超过最上方的值 Vector3 local_position = wheel.tire_model.transform.localPosition; if (local_position.y > TIRE_LOCAL_Y_MAX) { local_position.y = TIRE_LOCAL_Y_MAX; wheel.tire_model.transform.localPosition = local_position; } } }
// finds the corresponding visual wheel // correctly applies the transform public void ApplyLocalPositionToVisuals(WheelCollider collider, GameObject game_object) { /*if (collider.transform.childCount == 0) * { * Debug.Log(collider.transform.parent); * return; * } * * Transform visualWheel = collider.transform.GetChild(0); * * Vector3 position; * Quaternion rotation; * collider.GetWorldPose(out position, out rotation); * * visualWheel.transform.position = position; * visualWheel.transform.rotation = rotation;*/ Vector3 position; Quaternion rotation; collider.GetWorldPose(out position, out rotation); //Debug.Log(position); game_object.transform.position = position; game_object.transform.rotation = rotation; // * Quaternion.Euler(Vector3.right * 90); }
// タイヤモデル. public void tireModelControl() { foreach (var wheel in this.wheels) { WheelCollider wc = wheel.collider; Vector3 position; Quaternion rotation; wc.GetWorldPose(out position, out rotation); wheel.tire_model.transform.position = position; wheel.tire_model.transform.rotation = rotation; // タイヤモデルがボディから飛び出ないよう、上に上がりすぎないようにする. Vector3 local_position = wheel.tire_model.transform.localPosition; if (local_position.y > TIRE_LOCAL_Y_MAX) { local_position.y = TIRE_LOCAL_Y_MAX; wheel.tire_model.transform.localPosition = local_position; } } }
void GetWorldPose() { if (_component == null) { return; } _component.GetWorldPose(out _position, out _rotation); if (!position.IsNone) { position.Value = _position; } if (!rotation.IsNone) { rotation.Value = _rotation; } _dummy = Fsm.GetOwnerDefaultTarget(gameObject); if (_dummy != null) { _dummy.transform.position = _position; _dummy.transform.rotation = _rotation; } }
void Update() { wheel.GetWorldPose(out position, out rotation); transform.position = position; transform.rotation = rotation; }
/* * private void TurretInput() * { * Vector2 tIn = TurretControl.joystick(); * * Vector3 tur = new Vector3(tIn.x, 0, tIn.y); * tur = TurretControl.transform.TransformDirection(tur); * tur = transform.InverseTransformDirection(tur); * tur = Vector3.ProjectOnPlane(tur, Vector3.up); * turretRot = VectorMath.FindAngle(Vector3.forward, tur, Vector3.up) * Mathf.Rad2Deg; * Vector3 turup = Vector3.forward; * turret.localRotation = Quaternion.Euler(turup * turretRot); * * * if (rapidfireTime == 0) * { * if (TurretControl.GetPressDown(KnucklesButton.Trigger)) * { * Fire(); * } * }else * { * if (shootTimer > rapidfireTime&& TurretControl.GetPress(KnucklesButton.Trigger)) * { * Fire(); * shootTimer = 0; * } * shootTimer += Time.deltaTime; * } * } */ private void Update() { m_Wheels[0].ConfigureVehicleSubsteps(criticalSpeed, stepsBelow, stepsAbove); //TurretInput(); //keyboard input for testing //Vector3 move = Vector3.forward * Input.GetAxis("Vertical") + Vector3.right * Input.GetAxis("Horizontal"); //driving input //float forward = maxTorque * move.magnitude; float forward = maxTorque * throttle; if (steer.y < -0.5f) { forward *= -1; } float angle = maxAngle * steer.x; speed = transform.InverseTransformVector(body.velocity).z; float forw = Mathf.Abs(speed); angle /= 1 + forw / 20; // if (Mathf.Abs(move.z) < 0.1f && Mathf.Abs(move.x) > 0.5) // forward *= 3; //float forward = maxTorque * throttle; not fun lawrence steering float fVol = Mathf.Abs(forward); mvol = Mathf.Lerp(mvol, Mathf.Pow((fVol / maxTorque), 0.8f) * Mathf.Lerp(0.4f, 1.0f, (Mathf.Abs(m_Wheels[2].rpm) / 200)) * Mathf.Lerp(1.0f, 0.5f, handBrake), Time.deltaTime * 9); au_motor.volume = Mathf.Clamp01(mvol); float motorPitch = Mathf.Lerp(0.8f, 1.0f, mvol); au_motor.pitch = Mathf.Clamp01(motorPitch); svol = Mathf.Lerp(svol, skidsample.amt / skidSpeed, Time.deltaTime * 9); au_skid.volume = Mathf.Clamp01(svol); float skidPitch = Mathf.Lerp(0.9f, 1.0f, svol); au_skid.pitch = Mathf.Clamp01(skidPitch); //float forward = maxTorque * Input.GetAxis("Vertical"); //bool stopped = Mathf.Abs(transform.InverseTransformDirection(GetComponent<Rigidbody>().velocity).z) < 1.0f; for (int i = 0; i < wheelRenders.Length; i++) { WheelCollider wheel = m_Wheels[i]; if (wheel.transform.localPosition.z > 0) { // front wheels wheel.steerAngle = angle; //4wd? wheel.motorTorque = forward; } if (wheel.transform.localPosition.z < 0) // back wheels { } // wheel.brakeTorque = Mathf.Lerp(Mathf.Abs(forward) < 0.1f ? 1 : 0, brakeTorque, handBrake); wheel.motorTorque = forward; if (wheel.transform.localPosition.x < 0) // left wheels { } if (wheel.transform.localPosition.x >= 0) // right wheels { } // Update visual wheels if they exist, and the colliders are enabled if (wheelRenders[i] != null && m_Wheels[0].enabled) { Quaternion q; Vector3 p; wheel.GetWorldPose(out p, out q); Transform shapeTransform = wheelRenders[i].transform; shapeTransform.position = p; shapeTransform.rotation = q; } } steer = Vector2.Lerp(steer, Vector2.zero, Time.deltaTime * 4); }
// Apply the movement inputs to the wheels of the car private void Update() { brakeImage.color = Color.white; forwardImage.color = Color.white; backImage.color = Color.white; leftImage.color = Color.white; rightImage.color = Color.white; currentVelocity = mainBody.velocity.magnitude; if (manualControl) { if (Input.GetKey(KeyCode.Space)) { brakeImage.color = Color.green; leftTorque = 0; rightTorque = 0; } else { if (Input.GetKey(KeyCode.W)) { forwardImage.color = Color.green; leftTorque = torqueLimit; rightTorque = torqueLimit; } else if (Input.GetKey(KeyCode.A)) { leftImage.color = Color.green; leftTorque = -torqueLimit; rightTorque = torqueLimit; } else if (Input.GetKey(KeyCode.D)) { rightImage.color = Color.green; leftTorque = torqueLimit; rightTorque = -torqueLimit; } else if (Input.GetKey(KeyCode.S)) { backImage.color = Color.green; leftTorque = -torqueLimit; rightTorque = -torqueLimit; } else { leftTorque = 0; rightTorque = 0; } } } else { if (currentVelocity < maxVelocity) { if (brakeInput) { brakeImage.color = Color.green; leftTorque = 0; rightTorque = 0; } else { if (forwardInput) { forwardImage.color = Color.green; leftTorque = torqueLimit; rightTorque = torqueLimit; } else if (leftInput) { leftImage.color = Color.green; leftTorque = -torqueLimit; rightTorque = torqueLimit; } else if (rightInput) { rightImage.color = Color.green; leftTorque = torqueLimit; rightTorque = -torqueLimit; } else if (backInput) { backImage.color = Color.green; leftTorque = -torqueLimit; rightTorque = -torqueLimit; } else { leftTorque = 0; rightTorque = 0; } } } else { leftTorque = 0; rightTorque = 0; } } wheel_left.motorTorque = leftTorque; wheel_right.motorTorque = rightTorque; // Update wheel rotations (VISUAL) wheel_left.GetWorldPose(out wheel_pos, out left_rotation); wheel_right.GetWorldPose(out wheel_pos, out right_rotation); wheel_model_left.rotation = left_rotation; wheel_model_right.rotation = right_rotation; brakeInput = false; forwardInput = false; leftInput = false; rightInput = false; backInput = false; }
void FixedUpdate() //fixed update is more physics realistic { if (tempo < 200) { Forward = 1.0f; tempo = tempo + 1; } else { if (currentSpeed < 0.0f) { Forward = -1.0f; } else { Forward = 0f; } Brake = 1.0f; } Turn = Input.GetAxis("Horizontal"); Brake = Input.GetAxis("Jump"); WheelFL.steerAngle = maxSteerAngle * Turn; WheelFR.steerAngle = maxSteerAngle * Turn; currentSpeed = 2 * 22 / 7 * WheelBL.radius * WheelBL.rpm * 60 / 1000; //formula for calculating speed in kmph if (currentSpeed < topSpeed) { WheelBL.motorTorque = maxTorque * Forward;//run the wheels on back left and back right WheelBR.motorTorque = maxTorque * Forward; } //the top speed will not be accurate but will try to slow the car before top speed WheelBL.brakeTorque = maxBrakeTorque * Brake; WheelBR.brakeTorque = maxBrakeTorque * Brake; WheelFL.brakeTorque = maxBrakeTorque * Brake; WheelFR.brakeTorque = maxBrakeTorque * Brake; Quaternion flq; //rotation of wheel collider Vector3 flv; //position of wheel collider WheelFL.GetWorldPose(out flv, out flq); //get wheel collider position and rotation FL.transform.position = flv; FL.transform.rotation = flq; Quaternion Blq; //rotation of wheel collider Vector3 Blv; //position of wheel collider WheelBL.GetWorldPose(out Blv, out Blq); //get wheel collider position and rotation BL.transform.position = Blv; BL.transform.rotation = Blq; Quaternion fRq; //rotation of wheel collider Vector3 fRv; //position of wheel collider WheelFR.GetWorldPose(out fRv, out fRq); //get wheel collider position and rotation FR.transform.position = fRv; FR.transform.rotation = fRq; Quaternion BRq; //rotation of wheel collider Vector3 BRv; //position of wheel collider WheelBR.GetWorldPose(out BRv, out BRq); //get wheel collider position and rotation BR.transform.position = BRv; BR.transform.rotation = BRq; }
private Quaternion wheelRotation = new Quaternion(); //Quaternion refers to the rotation of objects // Update is called once per frame void Update() { targetWheel.GetWorldPose(out wheelPosition, out wheelRotation); //Stores the wheel position and rotation in GetworldPose transform.position = wheelPosition; transform.rotation = wheelRotation; }
// Update is called once per frame void Update() { targetWheel.GetWorldPose(out wheelPosition, out wheelRotation); transform.position = wheelPosition; transform.rotation = wheelRotation; }
private void UpdateWheelPose(WheelCollider _collider, Transform _transform) { // Quaternion bodyRotation = transform.rotation * Quaternion.Euler(0f, 0f, -frontWheelR.steerAngle * m_verticalInput); // bikeBody.rotation = Quaternion.Lerp(bikeBody.rotation, bodyRotation, 0.02f); // var latLng = frontTR.GetGeoPosition(new Vector2d(43.768419, -79.504172), 1); var latLng2 = frontTR.GetGeoPosition(new Vector2d(0, 0), 1); //Debug.Log("XY=" + latLng2); // York University Location //Debug.Log("testCenterPoint=" + testCenterPoint); var llpos = new Vector2d(latLng2[0], latLng2[1]); var pos = Conversions.GeoToWorldPosition(llpos, Map.CenterLatitudeLongitude, Map.WorldRelativeScale); // Debug.Log("latlng=" + pos); XY.text = "(" + pos + ")"; ///////////////////////// Lat Lng ////////////////////////////// var a = 0.0820877620; var b = -0.239524485; var c = 43.7647518; var d = -0.148612373; var e = 0.435345927; var f = -79.5018448; var g = 0.00186931199; var h = -0.00547156062; var XGround = ((latLng2[0] * a) + (latLng2[1] * b) + c) / (latLng2[0] * g + (latLng2[1]) * h + 1); var YGround = ((latLng2[0] * d) + (latLng2[1] * e) + f) / (latLng2[0] * g + latLng2[1] * h + 1); LatLong.text = "(" + XGround + " , " + YGround + ")"; /////////////////////////////////////////////////////////////// // create new object as a new point /* var objToSpawn = GameObject.CreatePrimitive(PrimitiveType.Cube); ; * objToSpawn.AddComponent<Rigidbody>().constraints = RigidbodyConstraints.FreezeAll; * objToSpawn.AddComponent<MeshFilter>(); * objToSpawn.AddComponent<BoxCollider>(); * objToSpawn.AddComponent<MeshRenderer>(); * objToSpawn.transform.position = new Vector3(-13, 6, -390);*/ // var gg = GameObject.CreatePrimitive(PrimitiveType.Sphere); // gg.transform.position = new Vector3((float)pos.x, 0, (float)pos.y); // StoreData(""+XGround , ""+YGround , ""+refrencePoint.position.y + ", time=" + System.DateTime.Now); // StoreData("" + latLng2[0], "" + latLng2[1], "" + refrencePoint.position.y + ", time=" + System.DateTime.Now); StoreSegmentData("" + XGround, "" + YGround, "collectedData", "" + refrencePoint.position.y, "time=" + System.DateTime.Now, "details"); counterStoreData++; window_graph.CreateCircle(new Vector2(i_counter_x_axis, refrencePoint.position.y * 10)); if (i_counter_x_axis > 280) { i_counter_x_axis = 0; } i_counter_x_axis = (float)(i_counter_x_axis + 0.1); Vector3 _pose = _transform.position; Quaternion _quat = _transform.rotation; _collider.GetWorldPose(out _pose, out _quat); _transform.position = _pose; _transform.rotation = _quat; }