Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.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
Unity/C#:如何在不增加空气阻力的情况下增加物品摩擦力?_C#_Visual Studio_Unity3d - Fatal编程技术网

Unity/C#:如何在不增加空气阻力的情况下增加物品摩擦力?

Unity/C#:如何在不增加空气阻力的情况下增加物品摩擦力?,c#,visual-studio,unity3d,C#,Visual Studio,Unity3d,我刚开始制作一个基于2d物理的游戏,但当我试图设置弹射器来检查一些功能时,我注意到弹射器开始滑落,但当我增大摩擦力时,它也增大了空气阻力,如何在不增加空气阻力的情况下增加摩擦力?在Unity中,只有两个值描述摩擦力。线性阻力和角度阻力 线性拖动-描述对象速度每滴答声减慢的速度 角度阻力-描述对象旋转每滴答声减慢的速度 我认为您需要一个小脚本来在不同的环境中实现不同的拖动,伪代码如下所示 if(in_the_catapult) { // Set the rigidbody to hig

我刚开始制作一个基于2d物理的游戏,但当我试图设置弹射器来检查一些功能时,我注意到弹射器开始滑落,但当我增大摩擦力时,它也增大了空气阻力,如何在不增加空气阻力的情况下增加摩擦力?

在Unity中,只有两个值描述摩擦力。线性阻力和角度阻力

  • 线性拖动-描述对象速度每滴答声减慢的速度
  • 角度阻力-描述对象旋转每滴答声减慢的速度
我认为您需要一个小脚本来在不同的环境中实现不同的拖动,伪代码如下所示

if(in_the_catapult)
{
    // Set the rigidbody to high value to not slide off
    rigidbody.drag = 100;
}
else if(touching_the_ground)
{
    // Set the rigidbody to what the friction should be on the ground
    rigidbody.drag = 2;
}
else if(in_the_air)
{
    // Set the rigidbody to what the air resistant should be 
    rigidbody.drag = 0.1;
}

此代码应在更新中运行,以检查每一帧的状态是否已更改,或者如果条件已更改,则应在事件中运行此代码,因为您的子弹可能会多次从地面反弹。

空气阻力是什么让您感到困扰?这不就是因为速度增加了摩擦力吗?因为它在空气中传播缓慢,不能像刚开始时弹射器的一小部分那样被发射出去,它就变成了一个不可移动的物体,所以弹射器停止了,弹丸没有发射出去,它只是从几像素高的地方漂浮下来。你试过玩吗刚体的
阻力
属性,或者
角度阻力
如果它从弹射器中“滚出”?另外,您是如何设置弹射器和射弹各自的
刚体的?也许弹射器的形状也是罪魁祸首?简而言之:你能帮我们重现你的问题吗?如果没有任何代码和细节,这个问题将很难回答,而且可能与堆栈溢出无关?请注意,您可能希望对弹射器使用摩擦力,而不是对射弹使用摩擦力,并使用两者的适当组合。如果您手动将物体放置在空中某个位置,是否确实存在摩擦力?可能是弹射器的摩擦力把它固定住了。在这种情况下,也许你可以在弹射器实际发射后立即切换物理材料来解决这个问题。