C# unity2d中的WASD运动
我是unity的新手,想知道如何设置A和D键,以便使用C# unity2d中的WASD运动,c#,unity3d,rigid-bodies,C#,Unity3d,Rigid Bodies,我是unity的新手,想知道如何设置A和D键,以便使用Rigidbody2D将我移动到右侧和左侧。我在论坛上找到了这个脚本,但它似乎不起作用: public float speed = 5f; private float movement = 0f; private Rigidbody2D rigidBody; // Use this for initialization void Start() { rigidBody = GetComponent<Rigidbody2D>
Rigidbody2D
将我移动到右侧
和左侧
。我在论坛上找到了这个脚本,但它似乎不起作用:
public float speed = 5f;
private float movement = 0f;
private Rigidbody2D rigidBody;
// Use this for initialization
void Start()
{
rigidBody = GetComponent<Rigidbody2D>();
}
// Update is called once per frame
void Update()
{
movement = Input.GetAxis("Horizontal");
if (movement > 0f)
{
rigidBody.velocity = new Vector2(movement * speed, rigidBody.velocity.y);
}
else if (movement < 0f)
{
rigidBody.velocity = new Vector2(movement * speed, rigidBody.velocity.y);
}
else
{
rigidBody.velocity = new Vector2(0, rigidBody.velocity.y);
}
}
公共浮动速度=5f;
私人浮动移动=0f;
私有刚体2d刚体;
//用于初始化
void Start()
{
刚体=GetComponent();
}
//每帧调用一次更新
无效更新()
{
移动=输入。GetAxis(“水平”);
如果(移动>0f)
{
rigidBody.velocity=新矢量2(运动*速度,rigidBody.velocity.y);
}
否则如果(移动<0f)
{
rigidBody.velocity=新矢量2(运动*速度,rigidBody.velocity.y);
}
其他的
{
rigidBody.velocity=新矢量2(0,rigidBody.velocity.y);
}
}
是否抛出错误?首先要检查的是,您将此脚本附加到的任何对象实际上都有一个
Rigidbody2D
物理,即设置刚体速度,应该在FixedUpdate
中完成,而不是Update
,如果你查到它,现在看起来太混乱了,别担心,你现在可以摆脱它
也许您应该尝试使用rb.AddForce(movement*speed,ForceMode2D.Impluse)代码>
由于var移动
实际上是正的还是负的取决于您按下的键,因此if语句的前两位没有任何用处
尝试查看有关移动播放机的单个教程。-改进按键演示-删除代码中的空白-添加更多标签以供更多人访问和查看查看查看输入。GetKeyDown()
方法应该满足您的需要。什么不起作用?是否有错误,玩家根本不移动,或者玩家移动不正确?