吸引硬币的磁力效应

Posted

技术标签:

【中文标题】吸引硬币的磁力效应【英文标题】:Magnetic effect to draw coins 【发布时间】:2018-09-12 20:49:14 【问题描述】:

我的游戏中有一艘宇宙飞船和一些硬币。当我将我的宇宙飞船移向硬币时,我想要产生磁效应,以便宇宙飞船将所有硬币吸入。下面的代码在我的情况下不起作用。我有一个 circlecollider2d 附加到我所有硬币的一个孩子上。这个想法是,当任何硬币越来越靠近我的宇宙飞船时,宇宙飞船就会把所有的硬币都吸进去。但它不起作用(没有磁效应)。

此代码附在硬币上。

public GameObject attractedTo;
public float radius;
public float force;

private bool inside;
private Transform magnet;

private Rigidbody2D rb;


void Start() 
    rb = attractedTo.GetComponent<Rigidbody2D>();

    magnet = GameObject.Find("Magnet").GetComponent<Transform>();

    inside = false;


void FixedUpdate () 
    if(inside) 
        Vector3 magnetField = attractedTo.transform.position - magnet.position;
        magnetField.z = 0;
        float index = (radius - magnetField.magnitude) / radius;
        rb.AddForce(force * magnetField * index, ForceMode2D.Force);
    


void OnTriggerEnter2D (Collider2D other) 
    if (other.gameObject.tag == "PlayerShipTag") 
        inside = true;
    


void OnTriggerExit2D (Collider2D other) 
    if (other.gameObject.tag == "PlayerShipTag") 
        inside = false;
    

【问题讨论】:

当你说它不工作时,你的意思是 什么都没有发生 或者有什么正在发生但不是你想要的。 磁效应未出现。由于 Rigidbody2D 组件(重力),它们会掉下来。 您能否确认,即使用断点,inside 设置正确? 是的。里面的作品。我有两个对撞机附在硬币上。一个 boxCollider2D 和一个 CircleCollider2D。当他们试图触发宇宙飞船的 BoxCollider2D 时,两者都搞砸了。 我不明白你说的对撞机是什么意思。他们出了什么问题? 【参考方案1】:

您的脚本附在每枚硬币上,您希望将您的力量应用于每枚硬币。这行在Start:

rb = attractedTo.GetComponent<Rigidbody2D>();

我假设attractedTo 是宇宙飞船?稍后,在FixedUpdate 中,您正在对 rb 施加一个力。

rb.AddForce(force * magnetField * index, ForceMode2D.Force);

因此,如果我正确理解了您的代码,那么您正在向宇宙飞船施加力,而不是硬币。

您需要为每个硬币添加一个 RigidBody2D 并将力(正确计算)施加到硬币的 RigidBody2d。

编辑:关于您关于硬币因重力而下落的评论,您可以随时关闭硬币刚体的重力。

编辑:另外一个注意事项是,您使用从磁铁到宇宙飞船的矢量作为力的方向。但是您并没有将其归一化为单位向量,因此您的力会根据距离而变化(这很好,除非您已经使用索引来考虑这一点)。

【讨论】:

谢谢。我会尽快试试这个。:) 好的。我改变了它。但是当我靠近硬币时,它们在屏幕上飞得很奇怪。 我添加了一个与你的磁力场方向有关的编辑。否则,如果您发现硬币移动得太快或其他原因,请尝试从非常低的力值开始,然后逐渐调整,直到获得正确的响应。

以上是关于吸引硬币的磁力效应的主要内容,如果未能解决你的问题,请参考以下文章

2022年深圳杯建模A题思路: 破除“尖叫效应”与“回声室效应”,走出“信息茧房”

拒绝“木桶效应” 安全铸就黄金理财盈利风景线

物理-引力场:百科

陀螺仪加速计磁力计等传感器汇总

关于蝴蝶效应

结构方程模型间接效应怎么计算