我试图让玩家在乒乓球比赛中控制两个拨片。但是,出于某种原因,只有一个桨可控,而另一个则什么都不做。这是桨属性栏的图像。
这是最右边的桨的代码,应该用箭头键控制。
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;
}
}
我似乎无法弄明白为什么它不会移动..请,任何帮助都会很棒,因为我此时已经到处检查过。谢谢!
答案 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;
}
}