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;
}
}