当我的游戏对象到达y轴上的某个点时,如何停止旋转?

时间:2015-07-08 19:32:19

标签: c# unity3d rotation gameobject

我目前正在制作简单的棒球比赛。我想要做的就是让玩家能够向后挥动球棒,然后进行充电。可以这么说,然后当按下一个按钮时,他会以一个等于存储的电量的速度向前摆动蝙蝠。

这一切都很好,但我的问题是我需要在蝙蝠到达y轴上的某个点时停止蝙蝠的运动,我不确定如何去做这个我不能只是告诉它在一段时间后停止旋转,因为每次挥杆可能产生的速度不同,每次蝙蝠都会在同一时间到达前点。

我尝试做的基本上是if(reached 266 on the y-axis stop rotating),但我不确定如何做到这一点。

无论如何,这是我到目前为止编写的代码:

public int rotateSpeed = 50;
public float AmountOfPowerChargedUp = 0;

void Update() 
{

    if (Input.GetMouseButton(0))    
    {
        AmountOfPowerChargedUp += 5f;
        transform.Rotate(Vector3.up * rotateSpeed * Time.deltaTime); 
        Debug.Log(AmountOfPowerChargedUp);
    }

    if (!Input.GetMouseButton (0)) 
    {
        transform.Rotate(Vector3.down * AmountOfPowerChargedUp * Time.deltaTime);
    }   

}

private void OnGUI()
{
    GUI.Label (new Rect (50, 15, 250, 25), "AmountOfPowerChargedUp: " + AmountOfPowerChargedUp); 
}

1 个答案:

答案 0 :(得分:0)

如果您旋转一定程度的度数,则应使用SlerpRotateTowards

Vector3 targetDir = (target.position - transform.position).normalized;

// The step size is equal to speed times frame time.
float step = speed * Time.deltaTime;

Vector3 newDir = Vector3.RotateTowards(transform.up, targetDir, step, 0.0);

transform.rotation = Quaternion.LookRotation(newDir)