【问题标题】:Unity2D - rotate left wheel to move the carUnity2D - 旋转左轮移动汽车
【发布时间】:2014-01-01 10:38:10
【问题描述】:

我正在将 Unity2D 用于一个简单的汽车/自行车物理游戏。 我希望当我按下右或左箭头时,车轮精灵旋转,所以汽车在移动。

这是我的代码:

float move=Input.GetAxis("Horizontal");
        if (Input.GetKey(KeyCode.RightArrow))
        {

            rigidbody2D.velocity = new Vector2(move*10,rigidbody2D.velocity.y);


        }
        if (Input.GetKey(KeyCode.LeftArrow))
        {


            rigidbody2D.velocity = new Vector2(move * 10, rigidbody2D.velocity.y);

        }

但这只是“推动”车轮,并没有旋转,如果汽车在空中,您仍然可以移动它……我需要旋转车轮,而不是推动它。有人可以帮忙吗?

【问题讨论】:

    标签: rotation unity3d 2d sprite


    【解决方案1】:

    速度只是朝着一个方向移动,就像您在脚本中看到的那样。另一方面,angularVelocity 是旋转。尝试使用rigidbody2D.angularVelocity 看看会发生什么。

    【讨论】:

    • 感谢解答,将轮子的角阻力设置得更高,会使运动更好吗?如果默认为 1,则轮子旋转得很快,但移动得很慢。
    【解决方案2】:

    这个简单的代码将旋转 2d 对象。自旋的速度取决于所选物体的速度。

    #pragma strict
    
    var power : float; //the engine power applied to the wheel
    var car : GameObject; //the object whose velocity you are calculating
    
    function Start () {
    
    }
    
    function Update () {
    
     var wheelpower = car.rigidbody2D.velocity.x * power; //velocity of "car" * engine power
    
    if(Input.GetKey(KeyCode.D)){
        transform.Rotate(0, 0, -wheelpower);}
    if(Input.GetKey(KeyCode.A)){
        transform.Rotate(0, 0, wheelpower);}
    

    }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多