Unity3D:添加与位置相关的带电力

Unity3D: Adding charged force in relation to position

我正在尝试制作一个 "kind of" 模拟 "worms" 游戏射击的游戏。玩家可以选择物体的位置(圆形),然后施加到物体上的力应沿其指向的方向移动。我尝试使用 AddForce(transform.right) 代码,但它只会向右移动。 (2D BoxCollider 和 RigidBody2D)

然后是困难的部分,让玩家通过充能来选择势力。当玩家按住 "f" 键时,我希望功率上升到某个点。一旦达到那个点,我希望它再次下降然后再次上升,这样玩家就可以选择他想要的力量。我不知道该怎么做。

我已经有一段时间没有编写 Unity 代码了,所以我的语法可能存在一些小错误,但它应该能让您了解如何完成此操作。循环的最佳选择是使用协程来不阻塞主线程。

在 Update() 中检查 F 的 'on key down' 并启动这个协程:

IEnumerator Cycle()  
{
 float max = 10.0f;
 float min = 1.0f;
 float interval = 0.5f;

  do 
   {             
     for(int i=min;i<max;i++)
     {
       PowerValue = i;
       yield return new waitforseconds(interval);
      if(!input.getkey(f))
          break;
     }
     for(int i=max;i>min;i--)
     {
       PowerValue = i;
       yield return new waitforseconds(interval);
       if(!input.getkey(f))
          break;
     }

   } while(input.getkey(f));
}

然后在 update() 中使用 powerValue 和 getKeyUp(f)

此处将 PowerValue 设置为参数,以防止代码将最大值和最小值设置在 1 到 10 范围之外(可配置)

private float powerValue = 1.0f;
public float PowerValue
{
get { return powerValue; }
set {
      if(value>10f)
         powerValue=10f;
      else if (value<1f)
         powerValue=1f;
      else
          powerValue=value;
    }
}