Unity赛车码表原理

13 篇文章 0 订阅

近日在制作赛车游戏时,遇到了码表,较为有趣,遂记录如下。

 

首先观察码表速度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);

这边顺便讲一下,通过轮胎的角速度获取车子整体的位移速度

// 获取速度
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;
    public Transform pointContainer;
    private float zRotation;

    // Start is called before the first frame update
    void Start()
    {
        label = this.GetComponent<UILabel>();
        zRotation = pointContainer.eulerAngles.z;
    }

    // Update is called once per frame
    void Update()
    {
        // 获取速度
        float speed = Mathf.Round(flWheelCollider.rpm * (flWheelCollider.radius * 2 * Mathf.PI) * 60 / 1000);
        if (speed < 0) speed = Mathf.Abs(speed);
        label.text = speed.ToString();
        // 获取码表度数
        float newZRotation = zRotation - currentSpeed * (270 / 140f);
        pointContainer.eulerAngles = new Vector3(0, 0, newZRotation);
    }
}

 

Unity赛车游戏的选题意义可以从以下几个方面来考虑: 1. 提高游戏的可玩性和真实性:Unity赛车游戏是一种比较特殊的游戏类型,玩家需要掌握车辆的速度、重量、惯性等物理属性,并应对复杂的场景设计和路线规划。因此,对Unity赛车游戏进行交互设计研究可以提高游戏的可玩性和真实性,为玩家提供更加流畅、有趣、真实的游戏体验。 2. 探索游戏的控制方式:Unity赛车游戏的控制方式是非常重要的一点,需要根据玩家的操作习惯和游戏类型进行选择,如使用键盘、手柄、触屏等方式来控制车辆。因此,对Unity赛车游戏进行交互设计研究可以探索不同的游戏控制方式,以提供玩家一个更加自由、灵活的游戏操作体验。 3. 提高游戏的难度和挑战性:Unity赛车游戏需要考虑到道路的宽度、弯曲程度、障碍物的设置等等,以增加游戏的难度和挑战性。因此,对Unity赛车游戏进行交互设计研究可以探索不同的场景设计和障碍物设置,以提高游戏的难度和挑战性。 4. 增加游戏的可持续性:Unity赛车游戏的交互设计研究还可以考虑如何设计游戏关卡、如何设置难度、如何提供奖励等等,以吸引玩家并增加游戏的可持续性。 5. 推动游戏产业发展:Unity赛车游戏是一个非常有潜力的游戏类型,可以为游戏产业发展提供新的思路和理论支持,推动相关产业的发展和进步。 综上所述,对Unity赛车游戏进行交互设计研究的选题意义非常重要,可以提高游戏的可玩性和真实性、探索不同的游戏控制方式、提高游戏的难度和挑战性,以及增加游戏的可持续性,同时还可以推动游戏产业的发展和进步。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值