移动2d对象统一



我有1年的c++编程经验,但就在昨天我开始学习Unity。我看到它需要c#,所以这不会有太大的不同。现在,我正在尝试移动一个2d对象,但我真的想了解它是如何工作的,而不仅仅是复制一些代码行。所以,他们是这样做的:

//
float horizontal = Input.GetAxis("Horizontal");
//which i assume gets the x coordonate of my object;
myRigidBody.velocity = new vector2(horizontal , myRigidBody.velocity.y);
//

我想我不明白这段代码的意思。我读到速度需要2个值(x,y),但我不太确定它在做什么。getAxis从[-1,1]获取一个值,我也不理解。如果你能帮助我,我将不胜感激。

Input.GetAxis("Horizontal");返回在Unity的输入管理器中定义的名为Horizontal的轴的当前值。

另外,new vector2(horizontal, myRigidBody.veloicty.y);可能是一个错别字,因为Rigidbody.velocity的类型是Vector3Vector2是一个隐式转换为Vector3的对象。

无论如何,myRigidBody.velocity = new Vector2(horizontal , myRigidBody.velocity.y);创建了一个Vector2类型的实例,其中x分量是horizontal, y分量是刚体速度的当前y分量,然后它将Vector2分配给刚体的速度。

GetAxis("Horizontal")返回按箭头键时从左(-1,0,0)到右(1,0,0)的值。无论如何,你会得到插值值,而不是突然改变。试试下面的代码,看看它在检查器

上的效果如何
public float horizontal;
private void Update()
{
horizontal = Input.GetAxis("Horizontal");
}

对于速度,你的"力变化"。刚体在任意方向上的速度x,y(水平,垂直轴)。你也可以用速度变量乘以坐标轴值。

最新更新