Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 试图提高我的游戏速度,但我一直遇到这样的错误:键入';汽车控制器';已定义名为';OnControllerColliderHit'; ControllerColliderHit上的私有无效(ControllerColliderHit命中) { 如果((controller.collisionFlags和collisionFlags.Sides)!=0) { if(矢量3.点(命中.正常,播放性)_C#_Unity3d - Fatal编程技术网

C# 试图提高我的游戏速度,但我一直遇到这样的错误:键入';汽车控制器';已定义名为';OnControllerColliderHit'; ControllerColliderHit上的私有无效(ControllerColliderHit命中) { 如果((controller.collisionFlags和collisionFlags.Sides)!=0) { if(矢量3.点(命中.正常,播放性)

C# 试图提高我的游戏速度,但我一直遇到这样的错误:键入';汽车控制器';已定义名为';OnControllerColliderHit'; ControllerColliderHit上的私有无效(ControllerColliderHit命中) { 如果((controller.collisionFlags和collisionFlags.Sides)!=0) { if(矢量3.点(命中.正常,播放性),c#,unity3d,C#,Unity3d,}错误的意思正是它所说的:代码中有两次完全相同的方法名和签名 你可能想这样做 private void OnControllerColliderHit(ControllerColliderHit hit) { if ((controller.collisionFlags & CollisionFlags.Sides) != 0) { if (Vector3.Dot(hit.normal, playerVelocity) < 0) {

}

错误的意思正是它所说的:代码中有两次完全相同的方法名和签名

你可能想这样做

private void OnControllerColliderHit(ControllerColliderHit hit)
{
    if ((controller.collisionFlags & CollisionFlags.Sides) != 0)
    {
        if (Vector3.Dot(hit.normal, playerVelocity) < 0)
        { playerVelocity -= hit.normal * Vector3.Dot(hit.normal, playerVelocity); }
    }

    if ((controller.collisionFlags & CollisionFlags.Above) != 0)
    {
        playerVelocity.y = -1;
    }
}
//if the character controller collider is hit
void OnControllerColliderHit(ControllerColliderHit hit)
{
    switch(hit.gameObject.tag)
    {
        case"SpeedBoost":
        motorForce = 80f;
            break;
        case "Ground":
        motorForce = 50f;
        break;
    }
}
ControllerColliderHit上的私有无效(ControllerColliderHit命中)
{
如果((controller.collisionFlags和collisionFlags.Sides)!=0)
{
if(矢量3.点(命中.正常,播放性)<0)
{playerVelocity-=hit.normal*Vector3.Dot(hit.normal,playerVelocity);}
}
如果((controller.collisionFlags和collisionFlags.over)!=0)
{
playerVelocity.y=-1;
}
开关(hit.gameObject.tag)
{
案例“SpeedBoost”:
机动力=80f;
打破
案例“理由”:
机动力=50f;
打破
}
}

尝试在代码中搜索方法名称。它在某处重复了。@Fattie为什么这个错误在统一中意味着不同的东西。。这是一个c#编译器错误,它说在OP的类
CarController
中有两个东西叫做
OnControllerColliderHit
。OP在代码中有两个完全相同的方法名和签名…哦,我明白了!就在这一页的代码中,OP有两个:-)@derHugo,我认为这是当你重写某个东西但意外地将其标记为private时出现的错误。谢谢..@Fattie你可以。。。我们进行了这次讨论。。毕竟是c#。不过这没关系(如果你不将其标记为private,那么c默认情况下它是private),你完全正确@derHugo你可以将这些标记为private(如果你愿意!)对不起,语言太多了。。哇
private void OnControllerColliderHit(ControllerColliderHit hit)
{
    if ((controller.collisionFlags & CollisionFlags.Sides) != 0)
    {
        if (Vector3.Dot(hit.normal, playerVelocity) < 0)
        { playerVelocity -= hit.normal * Vector3.Dot(hit.normal, playerVelocity); }
    }

    if ((controller.collisionFlags & CollisionFlags.Above) != 0)
    {
        playerVelocity.y = -1;
    }

    switch(hit.gameObject.tag)
    {
        case"SpeedBoost":
        motorForce = 80f;
            break;
        case "Ground":
        motorForce = 50f;
        break;
    }
}