C# Unity2D光线投射

C# Unity2D光线投射,c#,unity3d,C#,Unity3d,我正在尝试编写一个脚本,当玩家被敌人击中时,它将重新加载关卡。我是gamedev和c#的新手,所以我对自己的代码没有100%的信心 我遇到了一些让我感到厌烦的错误,我在网上找不到任何能给我指明正确方向的东西 using UnityEngine; using System.Collections; public class RobotAttack : MonoBehaviour { void Update() { RaycastHit2D hit; Vector2 atta

我正在尝试编写一个脚本,当玩家被敌人击中时,它将重新加载关卡。我是gamedev和c#的新手,所以我对自己的代码没有100%的信心

我遇到了一些让我感到厌烦的错误,我在网上找不到任何能给我指明正确方向的东西

using UnityEngine;
using System.Collections;

public class RobotAttack : MonoBehaviour 
{

void Update()
{

    RaycastHit2D hit;
    Vector2 attackPosition = transform.position + new Vector2(0f, 1f);

    if (Physics2D.Raycast(attackPosition, transform.forward, hit, 1f) && (hit.transform.tag == "Player"))        
    {
        Application.LoadLevel(Application.loadedLevel);
    }       
}
}
我得到的错误如下

Assets/Scripts/RobotAttack.cs(14,44): error CS0121: The call is ambiguous between the following methods or properties: `UnityEngine.Vector2.operator +(UnityEngine.Vector2, UnityEngine.Vector2)' and `UnityEngine.Vector3.operator +(UnityEngine.Vector3, UnityEngine.Vector3)'

Assets/Scripts/RobotAttack.cs(17,66): error CS0165: Use of unassigned local variable `hit'

Assets/Scripts/RobotAttack.cs(17,23): error CS1502: The best overloaded method match for `UnityEngine.Physics2D.Raycast(UnityEngine.Vector2, UnityEngine.Vector2, float, int)' has some invalid arguments

Assets/Scripts/RobotAttack.cs(17,23): error CS1503: Argument `#3' cannot convert `UnityEngine.RaycastHit2D' expression to type `float'
抱歉,如果格式很糟糕,这是我在这个网站上的第一篇帖子:^) 谢谢

Assets/Scripts/Robotack.cs(14,44):错误CS0121:调用不明确 在以下方法或属性之间:
UnityEngine.Vector2.operator+(UnityEngine.Vector2,
UnityEngine.Vector2)和
UnityEngine.Vector3.operator +(UnityEngine.Vector3,UnityEngine.Vector3)'

这意味着还有另一个同名的方法,因此编译器不知道要使用哪个方法。即:
Vector2.operator
Vector3.operator
更改名称将解决此问题或指定前缀库

Assets/Scripts/RobotAttack.cs(17,66):错误CS0165:使用未分配 局部变量“hit”

这是非常明确的,您没有将
hit
定义为任何东西,只有它的类型。 你可以试试:
RaycastHit2D hit=new RaycastHit2D()

但我不确定它的构造

编辑:查看构造函数后:

Assets/Scripts/RobotAttack.cs(17,23):错误CS1502:最佳 重载方法匹配 `UnityEngine.Physics2D.Raycast(UnityEngine.Vector2, UnityEngine.Vector2,float,int)“”具有一些无效参数

Assets/Scripts/RobotAttack.cs(17,23):错误CS1503:参数
#3'
无法将
UnityEngine.RaycastHit2D”表达式转换为类型“float”

这仅仅意味着您试图传递的参数类型错误。值得注意的是,第三个参数不是
float
infact,它看起来像是传入了
RaycastHit2D
type对象。如果你确信它会投下,你可以试着把它投到一个浮球上,尽管可能性很小。或者,您需要建立要使用的正确输入变量


希望这有点帮助

格式非常好!谢谢你的努力!谢谢你抽出时间来帮助我!关于第一个错误,我使用Vector2的唯一方法是Vector2 attackPosition=transform.position+new Vector2(0f,1f);因此,我不确定要重命名什么,如果有意义的话:)@Ety尝试使用
UnityEngine.Vector2 attackPosition=transform.position+new UnityEngine.Vector2(0f,1f)
指定要引用的库。