繁体   English   中英

Unity2D:在与敌人碰撞时将玩家推开

[英]Unity2D: Pushing Player away on collision with enemy

我正在尝试在我的游戏中添加一个脚本,这样每当玩家与敌人碰撞时,他就会受到伤害,但也会被推向相反的方向。 我已尝试实现此处发布的 Rigidbody2D 扩展代码

这是我的播放器脚本的一部分:

    private void OnCollisionEnter2D(Collision2D other)
    {
        var magnitude = 5000;
        if (other.gameObject.CompareTag("Monster"))
        {
            TakeDamage(25);
            GetComponent<Rigidbody2D>().AddExplosionForce(magnitude, this.transform.position, 500);
        }
    }

当我在 Unity 中运行游戏时,每当玩家与敌人发生碰撞时都会出现此错误:

Rigidbody2D.AddForce(force) assign attempt for 'Player' is not valid. Input force is { NaN, NaN }.
UnityEngine.Rigidbody2D:AddForce(Vector2, ForceMode2D)
Rigidbody2DExt:AddExplosionForce(Rigidbody2D, Single, Vector2, Single, Single, ForceMode2D) (at Assets/Scripts/Rigidbody2DExt.cs:20)
Player:OnCollisionEnter2D(Collision2D) (at Assets/Scripts/Player.cs:94)

欢迎来到 StackOverflow。

我建议您尝试:

private void OnCollisionEnter2D(Collision2D other){

    Vector2 impulse = new Vector2(-7, 2);
    if (other.gameObject.CompareTag("Monster")){
        TakeDamage(25);
        GetComponent<RigidBody2D>().AddForce(impulse, ForceMode2D.Impulse);
    }

}

此外,您必须找到一种方法来获得所需的方向来推动玩家。 例如,如果您从右侧接近敌人,您可能希望被推到左侧。 在我的例子中,你会被一些向上的冲动推到左边。 如果您还有问题,请告诉我:)

参考这里

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM