如何解决移动二维对象统一
我有 1 年的 C++ 编码经验,但就在昨天,我开始学习 Unity。我看到它需要 C#,所以这不会有太大不同。现在,我正在尝试移动 2d 对象,但是我真的很想了解它是如何工作的,而不仅仅是复制一些代码行。所以,他们就是这样做的:
#include <iostream>
#include <mpi.h>
#include <unistd.h>
int main(int argc,char* argv[])
{
MPI_Init(&argc,&argv);
MPI_Request request;
MPI_Status status;
int size,rank,data;
MPI_Comm_rank(MPI_COMM_WORLD,&rank);
MPI_Comm_size(MPI_COMM_WORLD,&size);
if (rank>0) {
MPI_Irecv(&data,1,MPI_INT,rank - 1,MPI_COMM_WORLD,&request);
MPI_Wait(&request,&status);
std::cout << "Rank " << rank << " has received message with data " << data<< " from rank " << rank - 1
<< std::endl;
}
std::cout << "Hello from rank " <<rank << " out of " << size<< std::endl;
data=rank;
if(rank + 1 < size){
MPI_Isend(&data,(rank + 1) 0,&request);
}
MPI_Wait(&request,&status);
MPI_Finalize();
return 0;
}
而且我不认为我明白这段代码的想法。我读到速度需要 2 个值 (x,y) 但我不太确定它对它们做了什么。getAxis 从 [- 1,1] 我也不明白。如果你能帮助我,我将不胜感激。
解决方法
Input.GetAxis("Horizontal");
返回在 Unity 的输入管理器中定义的名为 Horizontal
的轴的当前值。
另外,new vector2(horizontal,myRigidBody.veloicty.y);
可能是一个错字,因为 Rigidbody.velocity
的类型是 Vector3
。而 Vector2
是一个 has an implicit conversion to Vector3
对象。
无论如何,myRigidBody.velocity = new Vector2(horizontal,myRigidBody.velocity.y);
创建了一个 Vector2
类型的实例,其中 x 分量是 horizontal
,y 分量是刚体速度的当前 y 分量,然后分配Vector2
到刚体的速度。
GetAxis("Horizontal") 按箭头键返回左 (-1,0) 和右 (1,0) 的值。无论如何,你会得到内插的值而不是突然的变化。试试下面的代码,看看它在检查器上的样子
public float horizontal;
private void Update()
{
horizontal = Input.GetAxis("Horizontal");
}
至于速度,您可以“强制改变”刚体在任何您想要的 x、y(水平、垂直轴)方向上的速度。您还可以将轴值与速度变量相乘。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。