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# 使用混合树和C进行玩家射击#_C#_Unity3d - Fatal编程技术网

C# 使用混合树和C进行玩家射击#

C# 使用混合树和C进行玩家射击#,c#,unity3d,C#,Unity3d,我在用C#和Unity做射击游戏。我的代码可以工作,但我想调整它。我把它放在一个混合树上,用玩家所在的方向来发射子弹。问题是,如果你快速改变方向,玩家并不总是射击。我发现这是因为1或-1的完整值并不总是能够实现。如果我将“小于或等于”与“等于(=)”相对,子弹会一直发射,因为在这一点上总是“小于”。有没有其他的方法? 先谢谢你 我的代码示例,这些只有2个方向来节省空间,它是一个4个方向的精灵。很抱歉,如果代码被破坏了,我不知道如何在这里正确地显示它 if(myAnimator.GetFloat

我在用C#和Unity做射击游戏。我的代码可以工作,但我想调整它。我把它放在一个混合树上,用玩家所在的方向来发射子弹。问题是,如果你快速改变方向,玩家并不总是射击。我发现这是因为1或-1的完整值并不总是能够实现。如果我将“小于或等于”与“等于(=)”相对,子弹会一直发射,因为在这一点上总是“小于”。有没有其他的方法? 先谢谢你

我的代码示例,这些只有2个方向来节省空间,它是一个4个方向的精灵。很抱歉,如果代码被破坏了,我不知道如何在这里正确地显示它

if(myAnimator.GetFloat(“DirectionX”)=-1f)
{
shotTime=Time.Time+shot之间的时间;
GameObject b=(实例化(bulletLeft,shotPoint.position+-transform.right,Quaternion.identity));
b、 GetComponent().AddForce(-transform.right*速度);
}
if(myAnimator.GetFloat(“DirectionY”)==1f)
{
shotTime=Time.Time+shot之间的时间;
GameObject b=(实例化(bulletUp、shootUpPoint.position+transform.up、Quaternion.Euler(0,0,90));
b、 GetComponent().AddForce(transform.up*速度);

}
听起来像是在寻找谨慎的整数值:

int dirX = Mathf.RoundToInt(myAnimator.GetFloat("DirectionX"))
if(dirX == 1)
  //etc

浮点数本质上是近似值。因此,在这种情况下,相等性检查通常没有意义。相等只能用于固定点数,如int、decimal、long。简而言之,如果你对近似值没问题,就使用浮点,因为它的性能要好得多;如果需要精度,请使用定点。可以使用小于或等于,但必须排除0和大于0,即dir>0.0f&&dir=-1.0f