Unity赛车码表原理

更新时间:2023-06-17 13:02:06 阅读: 评论:0

Unity赛车码表原理近⽇在制作赛车游戏时,遇到了码表,较为有趣,遂记录如下。
⾸先观察码表速度0mph时,指针Roatation的z轴⾓度为-133
然后140mph时的z轴⾓度为-43,则
由 140 mph = 270°
=> 1 mph = 270/140 °
=> α mph = α * 270 / 140 °
之间的夹⾓正好为90度,那么按顺时针的话,从0mph到140mph的欧拉⾓为270度。
夹⾓计算出来后,需要跟据速度来换算成⾓度,推导如下:所以重要结论 每公⾥的欧拉⾓为 α * 270 / 140 °换算成代码:
// 获取码表度数
float newZRotation = zRotation - currentSpeed * (270 / 140f);
这边顺便讲⼀下,通过轮胎的⾓速度获取车⼦整体的位移速度。
// 获取速度
grants
float speed = Mathf.Round(flWheelCollider.rpm * (flWheelCollider.radius * 2 * Mathf.PI) * 60 / 1000);
flWheelCollider是轮胎的WheelCollider,rpm是旋转速度,⼀分钟多少圈;之后这个2ΠR应该⼤家都能看懂,也就是周长;
乘以 60 / 1000,是千⽶每⼩时的单位。那么如此⼀来就获取了位移速度,通过上⾯提到的速度换成为⾓度的公式就可以实现了。完整代码:连同
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SpeedDisplay : MonoBehaviour
{
public WheelCollider flWheelCollider;
private UILabel label;
六级分数查询public float currentSpeed;
span80public Transform pointContainer;
private float zRotation;
// Start is called before the first frame update
2012年大学排名
地心游记1>春望的翻译void Start()
{
label = this.GetComponent<UILabel>();
zRotation = pointContainer.eulerAngles.z;
}
// Update is called once per frame
void Update()
{
receive的用法/video player
/ 获取速度
float speed = Mathf.Round(flWheelCollider.rpm * (flWheelCollider.radius * 2 * Mathf.PI) * 60 / 1000);
少儿英文歌曲if (speed < 0) speed = Mathf.Abs(speed);
< = speed.ToString();
// 获取码表度数
float newZRotation = zRotation - currentSpeed * (270 / 140f);
pointContainer.eulerAngles = new Vector3(0, 0, newZRotation);
}
}

本文发布于:2023-06-17 13:02:06,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/148232.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:速度   获取   码表   赛车   查询
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图