我想要一个击退效果与此代码,但我不知道如何。我是新的编码仍在学习的东西!
这是我的代码,我希望击退有效果。PlayerMovement。MyBody是一个脚本与刚体附加。
/// <summary>
/// If We CanDamage LifeScorecount minus 1 and stes CanDamage to false and starts Coroutine.
/// If Life is higher than 0 change thet text to the new life
/// If life is 0 then stop Time and start Coroutine RestartGame
/// </summary>
public void DealDamage()
{
if(CanDamage)
{
Anim.Play("Stun");
LifeScoreCount--;
Vector2 direction = (transform.position, 0);
PlayerMovement.myBody.AddForce(direction * -10f);
if (LifeScoreCount >= 0)
{
TextLife.text = "x" + LifeScoreCount;
}
if (LifeScoreCount == 0)
{
Time.timeScale = 0f;
StartCoroutine(RestartGame());
}
CanDamage = false;
StartCoroutine(WaitForDamage());
}
}
1条答案
按热度按时间ruyhziif1#
这取决于你如何实现你的移动和你想要你的回击看起来像什么。假设你只是想推开刚体,你可以像你已经尝试过的那样添加一个力。要使用“一次性”推动,你可以使用ForceMode.Impulse。对于你想要使用的方向,使用两个点。对象的变换位置,被推开,减去对象的变换位置,也就是把角色推开。所以如果你想让敌人推开玩家,你可以尝试这样的方法:
如果您还希望击退沿着y轴工作,只需使用变换位置而不是新的Vector3。如果您没有对敌人的引用,您可能需要添加一个参数,以便每当敌人伤害玩家时,他会将自己的位置作为参数传递。
也许可以考虑使用SerializeField作为击退力,这样你就可以很容易地在编辑器中编辑它。