所以我试图使用代码在按键时来回摆动武器,但由于某种原因,没有任何事情发生。我已经通过单独运行代码测试了各种代码,并且我的所有语句都可以在这里和那里进行一些更改。但我只是想弄清楚如何将它们放在一起并让它们全部运转。感谢任何指针!
public float BackRotationsSpeed = 100f;
public float ForwardRotationSpeed = 300f;
// Use this for initialization // Original rotation cordinates of sword (-1.523,86.914,8.212)
void Start () {
// Rotation kan foregå på left right up down forward backwards
}
// Update is called once per frame
void Update () {
if (Input.GetKey (KeyCode.U) && transform.eulerAngles.z > 8.2 && transform.eulerAngles.z < 8.3) // Checks if sword is in its original location, and if it is swing backwards.
{
transform.Rotate (Vector3.forward, -BackRotationsSpeed * Time.deltaTime);
}
if (Input.GetKey (KeyCode.U) && transform.eulerAngles.z > 70 && transform.eulerAngles.z < 200) // Checks if sword has reached furthest back point before swining forward + triple the speed swinging forward for extra oomf!
{
transform.Rotate (Vector3.forward, ForwardRotationSpeed * Time.deltaTime);
}
if(Input.GetKey (KeyCode.U) &&transform.eulerAngles.z>8.3 && transform.eulerAngles.z<70) // Checks if sword has reached furthest forward point in the forward swing, if it is reset the rotation to its origin and wait for next attack command
{
Vector3 temp = transform.rotation.eulerAngles;
temp.z = 8.21f;
transform.rotation = Quaternion.Euler(temp);
}
答案 0 :(得分:1)
您的代码正在运行第一个&#34;如果&#34;将剑旋转到大约6.5度(假设为30fps)的陈述。之后,6.5超出了任何if语句的范围,所以没有其他事情发生。
我的指针是使用攻击键设置DESIRED旋转,然后让每个帧更新根据它的当前旋转向该位置旋转。
答案 1 :(得分:0)
尝试将输入键语句拉离其他语句,如下所示,同时尝试考虑未列出的角度,如果剑落入该区域,则不再获得响应。
不要忘记存在负面角度,他们可以给你一个真正的困难时间与他们合作。多个不同的数字可以说明完全相同的方向,有时数字会在90左右后回落到0,所以只需确保调试所有角度并自行检查浮点数。
public float BackRotationsSpeed = 100f;
public float ForwardRotationSpeed = 300f;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
if (Input.GetKey (KeyCode.U))
{
if (transform.eulerAngles.z > 8.2 && transform.eulerAngles.z < 8.3) // Checks if sword is in its original location, and if it is swing backwards.
{
transform.Rotate (Vector3.forward, -BackRotationsSpeed * Time.deltaTime);
}
if (transform.eulerAngles.z > 70 && transform.eulerAngles.z < 200) // Checks if sword has reached furthest back point before swining forward + triple the speed swinging forward for extra oomf!
{
transform.Rotate (Vector3.forward, ForwardRotationSpeed * Time.deltaTime);
}
if(transform.eulerAngles.z>8.3 && transform.eulerAngles.z<70) // Checks if sword has reached furthest forward point in the forward swing, if it is reset the rotation to its origin and wait for next attack command
{
Vector3 temp = transform.rotation.eulerAngles;
temp.z = 8.21f;
transform.rotation = Quaternion.Euler(temp);
}
}
}