我试图制作一个脚本来控制角色。我希望角色向右移动一定距离,同时交替左箭头然后右箭头输入。理想情况下,当我开始游戏时,我按下正确的箭头 - 角色向右移动说10px,然后按向左箭头 - 角色向右移动,此模式继续交替,并且在彼此之后永远不允许两个相同的输入,例如:左箭头左ARROW或右箭头右箭头。
答案 0 :(得分:1)
结束了这个,但感谢你的帮助:D
using UnityEngine;
using System.Collections;
public class PlayerController : MonoBehaviour {
public float moveSpeed;
public float jumpHeight;
private KeyCode lastHitKey;
void Start()
{
}
void Update()
{
if(Input.GetKeyDown (KeyCode.Space))
{
GetComponent<Rigidbody2D>().velocity = new Vector2(0, jumpHeight);
}
if(Input.GetKeyDown (KeyCode.D))
{
if(lastHitKey == KeyCode.D)
{
}else
{
GetComponent<Rigidbody2D>().velocity = new Vector2(moveSpeed, 0);
lastHitKey = KeyCode.D;
}
}
if(Input.GetKeyDown (KeyCode.A))
{
if(lastHitKey == KeyCode.A)
{
}else
{
GetComponent<Rigidbody2D>().velocity = new Vector2(moveSpeed, 0);
lastHitKey = KeyCode.A;
}
}
}
}
答案 1 :(得分:0)
一个快速解决方案(可能不是最好的)是声明2个布尔值,让我们说布尔右,左并将它们设置为假。 在按下某个键后的事件中,让我们说出正确的键:
{
right=true;
if(left==true)
//move character
left=false;
}
,左键是
{
left=true;
if(right==true)
//move character
right=false;
}
这样,除非右箭头和左箭头交替出现,否则角色不会移动。
答案 2 :(得分:0)
而不是使用&#34; KeyCode.A&#34;在if语句中你可以写:
if(GetComponent<RigidBody2D>().velocity.x < maxSpeed){
GetComponent<RigidBody2D>().AddForce(new Vector2(Input.GetAxis("Horizontal") * Time.deltaTime * speedMult, 0));
}