C# 如何在unity中制作2D实时策略摄像机控制器?

C# 如何在unity中制作2D实时策略摄像机控制器?,c#,unity3d,C#,Unity3d,我已经找了很多年关于如何在2D中为Unity制作实时策略相机。我的意思是,你应该用W,A,S,D来控制相机,无论我在哪里看到它都是3D的。我一直在试着写我自己的脚本,但相机从来没有工作,我迫切需要帮助。我已经尝试了很多,但是作为Unity的初学者,我真的需要帮助。如果你能告诉我如何开始这件事,我会很高兴的 你认为我应该使用武力方法还是应该使用unity已经安装的另一种方法?我也尝试过使用向量,但当我环顾四周时,每个人都在使用向量3,它只用于3D统一 您可以将单个脚本附加到相机。 public f

我已经找了很多年关于如何在2D中为Unity制作实时策略相机。我的意思是,你应该用W,A,S,D来控制相机,无论我在哪里看到它都是3D的。我一直在试着写我自己的脚本,但相机从来没有工作,我迫切需要帮助。我已经尝试了很多,但是作为Unity的初学者,我真的需要帮助。如果你能告诉我如何开始这件事,我会很高兴的


你认为我应该使用武力方法还是应该使用unity已经安装的另一种方法?我也尝试过使用向量,但当我环顾四周时,每个人都在使用向量3,它只用于3D统一

您可以将单个脚本附加到相机。

public float speed =10.0f;
void Update()
{
Vector3 a = transform.position
    if(Input.GetKeyDown("W"))
    {
        a.position.y += speed *Time.deltaTime
    }
    if(Input.GetKeyDown("S"))
    {
        a.position.y -= speed *Time.deltaTime
    }
transform.position =a;
}

你可以根据需要调整速度。您可以对其他键执行此操作。注:按下键时调用GetKeyDown。希望这有帮助。

使用
Vector3 direction=new Vector3()创建一个方向向量

根据关键点在所需方向操纵向量:

if (Input.GetKey(KeyCode.A)) 
   direction += Vector3.left;
添加“内置”矢量3.left将使矢量的方向指向左侧,您可以在其上添加其他关键点以获得最终方向


然后,您可以使用
transform.Translate()
移动游戏对象(在本例中,您将其连接到了您的相机),方法是传递基于按键作为参数计算的方向。然后相乘得到
方向*速度*时间.deltaTime

不要在你的相机上使用物理学。只需直接移动变换。Vector2是Vector3的2D等价物。在任何你想使用Vector3的地方,只要使用Vector2就行了(当然没有z参数),请提供你当前的实现,这样我就可以改进它了。这甚至可以编译吗
Vector3
对于以
float
作为参数的
operator+
没有任何重载错误是因为我直接将速度添加到transform.position。我已经编辑了代码,请立即尝试。这仍然不起作用,因为
tranform.position.y
是该值的副本,而不是对它的引用