C# Unity 2d弹离墙运动

C# Unity 2d弹离墙运动,c#,unity3d,2d,C#,Unity3d,2d,我想在现场移动一个球。球开始在随机位置移动,然后与包含被碰撞R2D的对象碰撞,球改变其位置并朝另一个方向移动 public float MoveSpeed; private Rigidbody2D rb; private void Start() { rb = GetComponent<Rigidbody2D>(); rb.velocity = RandomVector(-5f, 5f); transform.gameObject.GetOrAddCom

我想在现场移动一个球。球开始在随机位置移动,然后与包含被碰撞R2D的对象碰撞,球改变其位置并朝另一个方向移动

  public float MoveSpeed;
private Rigidbody2D rb;

private void Start()
{
    rb = GetComponent<Rigidbody2D>();
    rb.velocity = RandomVector(-5f, 5f);
    transform.gameObject.GetOrAddComponent<ColliderEventSystem>().ColliderEntered += PushObject;
}

private void PushObject(ColliderEventSystem eventTarget, Collider2D other)
{
    float speed = 100;
    Vector3 direction = (transform.position - other.transform.position).normalized;
    rb.AddForce((direction * speed));
}

private Vector3 RandomVector(float min, float max)
{
    var x = UnityEngine.Random.Range(min, max);
    var y = UnityEngine.Random.Range(min, max);
    return new Vector3(x, y);
}
公共浮动速度;
私有刚体2d rb;
私有void Start()
{
rb=GetComponent();
rb.速度=随机向量(-5f,5f);
transform.gameObject.GetOradComponent().CollizeRentered+=PushObject;
}
私有void PushObject(CollizeReventSystem事件目标,Collizer2D其他)
{
浮动速度=100;
Vector3方向=(transform.position-other.transform.position).规格化;
rb.附加力((方向*速度));
}
专用向量3随机向量(最小浮动、最大浮动)
{
var x=单位发动机随机范围(最小值、最大值);
变量y=单位发动机随机范围(最小值、最大值);
返回新矢量3(x,y);
}
代码中有错误,因为对象改变了位置,但没有按应有的方式移动。


图中显示了球应该如何移动

看起来你必须得到玩家的
附带角度
,然后将角度乘以
-1
设置为
反射角度
。你是什么意思,我不明白,你是说你需要像弹跳效果这样的效果?对吗?是的,在乒乓球游戏中是这样的,但是我只需要球的作用,你必须看到它,尽管它是[重复的],你也可以看到这个问题的答案。