右桨没有在乒乓球比赛中移动以获得统一

时间:2016-04-25 01:49:12

标签: c# scripting unity3d

我试图让玩家在乒乓球比赛中控制两个拨片。但是,出于某种原因,只有一个桨可控,而另一个则什么都不做。这是桨属性栏的图像。

enter image description here

这是最右边的桨的代码,应该用箭头键控制。

    using UnityEngine;

使用System.Collections;

公共课PaddleRight:MonoBehaviour {

public Vector3 playerPosR;
public float paddleSpeed = 1F;
public float yClamp;
void Start()
{


}

// Update is alled once per frame
void Update()
{

    float yPos = gameObject.transform.position.y + (Input.GetAxis("Vertical") * paddleSpeed);

    if (Input.GetKey(KeyCode.DownArrow) || Input.GetKey(KeyCode.UpArrow)) {
        playerPosR = new Vector3(gameObject.transform.position.x, Mathf.Clamp(yPos, -yClamp, yClamp), 0);
        print("right padddle trying to move");
    }

    gameObject.transform.position = playerPosR;
}

}

我似乎无法弄明白为什么它不会移动..请,任何帮助都会很棒,因为我此时已经到处检查过。谢谢!

1 个答案:

答案 0 :(得分:1)

我在一个项目中重新创建了问题,发现它唯一的问题可能是你忘记了yClamp是公共的并且在检查器中它被设置为0。确保将yClamp设置为它应该是什么而不是0.

我建议移动yPos赋值以及在if语句中设置位置,因为如果玩家没有移动,你就不会改变它们。

您也可以将gameObject.transform.position更改为普通transform.position

这里是精炼代码:

public Vector3 playerPosR;
public float paddleSpeed = 1F;
public float yClamp; // make sure it's not 0 in the inspector!

// Update is alled once per frame
void Update()
{
    if (Input.GetKey(KeyCode.DownArrow) || Input.GetKey(KeyCode.UpArrow))
    {
        float yPos = transform.position.y + (Input.GetAxis("Vertical") * paddleSpeed);
        playerPosR = new Vector3(transform.position.x, Mathf.Clamp(yPos, -yClamp, yClamp), 0);
        transform.position = playerPosR;
    }
}