我制作了一种壁垒式游戏,当点击鼠标按钮时,我需要我的角色更换墙壁。我使用重力工作,但它产生了不良影响。因此我现在正在使用transform.position,但现在该字符仅移动一瞬间(我假设transform.position仅在实际点击鼠标按钮时激活)。
如何在鼠标点击上改变方向,而不是仅仅移动一下? 我需要某种while循环,或者我在哪里?
我的课程:
//Variables used by the Player
public int flyingSpeed;
bool rightWall = true;
bool inAir = false;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
//Constantly moves the Players position along the Y-axis
if (inAir == false) {
if (Input.GetMouseButtonDown (0) && rightWall == true) {
transform.position += Vector3.left * flyingSpeed * Time.deltaTime;
rightWall = false;
inAir = true;
} else if (Input.GetMouseButtonDown (0) && rightWall == false) {
transform.position += Vector3.right * flyingSpeed * Time.deltaTime;
rightWall = true;
inAir = true;
}
}
}
void OnCollisionEnter2D(Collision2D coll) {
inAir = false;
}
答案 0 :(得分:0)
Input.GetMouseButtonDown
方法仅在单击按钮的第一帧上返回true,因此您的移动操作仅执行一次,这不足以切换墙。
要在墙之间切换,您可以执行以下操作之一:
transform.position
制作一个功能,检查播放器是在右侧还是左侧(让我们的呼叫为WallCheck
)。然后在每次单击鼠标时更改rightWall
值。然后将其添加到Update方法
if (WallCheck() != rightWall)
transform.position += rightWall ? Vector3.left : Vector3.right * flyingSpeed * Time.deltaTime;