我找到了一些.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)'的最佳重载方法匹配'有一些无效的参数'
答案 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())出现错误消息。
再次感谢。