new vector3(float,float,float)重载错误?

时间:2015-02-02 18:53:03

标签: javascript c#

我找到了一些.JS脚本,但现在将它们转换为C#(我更了解C#)。我坚持这个看似简单的陈述:

JS:     if(Physics.Raycast(transform.position - Vector3(0,0.25,0),Vector3(0,-1,0),hit)){}

错误消息msg是没有重载方法接受这些参数。是因为0.25是双重而不浮动? 尝试了文字的f

我在C#中尝试了什么:

 if (Physics.Raycast (transform.position - new Vector3(0,0.25,0), new Vector3(0,-1,0), hit)){}

(我在第一个新的Vector3上得到了重载(float,float,float)错误

if (Physics.Raycast (transform.position - new Vector3(0.0f,0.25f,0.0f), new Vector3(0,-1,0), hit)){}
if (Physics.Raycast (transform.position - new Vector3(0.0f,0.2f,0.0f), new Vector3(0,-1,0), hit)){}
        Vector3 tempVec = new Vector3(0.0f,0.25f,0.0f);
        Vector3 tempVec2 = new Vector3(0,-1,0);
if (Physics.Raycast (transform.position - tempVec, tempVec2, hit)){}

我已经尝试了很多,但你明白了。 如果它是一个双重问题,那么它首先在Vector3中是如何重载的呢?我怎样才能把它放回c#?

更新:'新的Vector3(0.0f,0.25f,0.0f)'和'new Vector3(0,-1,0)'在'if'语句之外工作。但在里面,我现在得到错误:

''UnityEngine.Physics.Raycast(UnityEngine.Vector3,UnityEngine.Vector3,UnityEngine.RaycastHit)'的最佳重载方法匹配'有一些无效的参数'

1 个答案:

答案 0 :(得分:0)

感谢您的帮助,这是我的第一篇文章之一,所以我感谢您对我凌乱的问题不要太苛刻! 我注意到参数末尾的'UnityEngine.RaycastHit'。

if (Physics.Raycast (transform.position - new Vector3(0.0f,0.25f,0.0f), new Vector3(0,-1,0), **out** hit)) {}

似乎有效。 C#使用了许多JavaScript没有的关键字。我只需要知道何时使用它们。

原始错误是

“'UnityEngine.Vector3.Vector3(float,float,float)的最佳重载方法匹配有一些无效的参数'”

所以我将'Vector3(0,0.25,0)'更改为'Vector3(0.0f,0.25f,0.0f)',这是第二次( Raycast())出现错误消息。

再次感谢。