我正在做一个自上而下的'atari'型游戏,我最近遇到了一些麻烦,我使用transform.position来改变我在屏幕上的坐标,但是使用GetKey移动的速度有点太快,所以我尝试使用一个浮动来减缓进展,现在它根本不动......这是我的代码
#pragma strict
var xCoor = 0;
var yCoor = 0;
function Start () {
}
function Update () {
if(Input.GetKey (KeyCode.D))
xCoor += 0.5;
transform.position = Vector2(xCoor,yCoor);
if(Input.GetKey (KeyCode.W))
yCoor += 0.5;
transform.position = Vector2(xCoor,yCoor);
if(Input.GetKey (KeyCode.A))
xCoor += -0.5;
transform.position = Vector2(xCoor,yCoor);
if(Input.GetKey (KeyCode.S))
yCoor += -0.5;
transform.position = Vector2(xCoor,yCoor);
}
你可能会告诉我新的Unity,所以如果有更好的方法,请分享!谢谢;)
答案 0 :(得分:2)
我不确定,但我相信你的xCoor是int类型。因此,当您尝试向其添加浮动时,它不会更改。
将xCoor和yCoor的定义更改为0.0而不是0,并查看是否有效。
#pragma strict
var xCoor = 0.0;
var yCoor = 0.0;
另外,正如评论中指出的那样,你真的应该在if语句之后添加一些大括号,这样你就会得到不想要的结果。
function Update () {
if(Input.GetKey (KeyCode.D)) {
xCoor += 0.5;
transform.position = Vector2(xCoor,yCoor);
}
if(Input.GetKey (KeyCode.W)) {
yCoor += 0.5;
transform.position = Vector2(xCoor,yCoor);
}
if(Input.GetKey (KeyCode.A)) {
xCoor += -0.5;
transform.position = Vector2(xCoor,yCoor);
}
if(Input.GetKey (KeyCode.S)) {
yCoor += -0.5;
transform.position = Vector2(xCoor,yCoor);
}
}