2016-04-25 37 views
0

我想让玩家在乒乓球游戏中控制两个桨。但是,由于某种原因,只有一个桨是可控的,而另一个桨没有任何作用。这是一个桨叶属性栏的图像。右桨没有在团结游戏中移动

enter image description here

这里是代码应与箭头键来控制最右桨。

using UnityEngine; 

using 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

我在一个项目中重新创建了问题,发现唯一的问题可能是你忘记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; 
    } 
} 
+0

好极了!万分感谢! – Luke