我目前正在制作简单的棒球比赛。我想要做的就是让玩家能够向后挥动球棒,然后进行充电。可以这么说,然后当按下一个按钮时,他会以一个等于存储的电量的速度向前摆动蝙蝠。
这一切都很好,但我的问题是我需要在蝙蝠到达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);
}
答案 0 :(得分:0)
如果您旋转一定程度的度数,则应使用Slerp
或RotateTowards
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)