微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

移动二维对象统一

如何解决移动二维对象统一

我有 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("Horizo​​ntal") 按箭头键返回左 (-1,0) 和右 (1,0) 的值。无论如何,你会得到内插的值而不是突然的变化。试试下面的代码,看看它在检查器上的样子

  public float horizontal;
  private void Update()
    {
       horizontal = Input.GetAxis("Horizontal");
    }

至于速度,您可以“强制改变”刚体在任何您想要的 x、y(水平、垂直轴)方向上的速度。您还可以将轴值与速度变量相乘。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。