unity3d 敌人跟随玩家[已关闭]

aydmsdu9  于 2023-02-09  发布在  其他
关注(0)|答案(1)|浏览(158)

已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题?**添加详细信息并通过editing this post阐明问题。

昨天关门了。
Improve this question
这个功能是用来跟随玩家的,但是当敌人的x接近玩家的x时,它会不断地来回翻转我想是因为它的速度,比如2,它经过2个单位然后翻转过玩家,再不断地翻转。如果玩家在敌人的上面或者下面,敌人在它的值(x)接近玩家的值时,它会不断地在它的位置周围翻转。

void MoveTowardPlayer ( )
{
    if ( player.transform.position.x < transform.position.x )
    {
        if ( facingRight )
        {
            Flip ( );
        }
    }
    else if ( player.transform.position.x > transform.position.x )
    {
        if ( !facingRight )
        {
            Flip ( );
        }
    }

    anim.SetBool ( "Attack", false );
    anim.SetBool ( "Walk", true );
    if ( checkingGround && !checkingWall )
        enemyRB.velocity = new Vector2 ( moveSpeed * moveDirection, enemyRB.velocity.y );
    else
    {
        anim.SetBool ( "Walk", false );
        enemyRB.velocity = new Vector2 ( 0, enemyRB.velocity.y );
    }
}

void Flip ( )
{
    moveDirection *= -1;
    facingRight = !facingRight;
    transform.Rotate ( 0, 180, 0 );
}
o0lyfsai

o0lyfsai1#

不知道这是否有用,但是如果你想让敌人在接近玩家的时候做些什么。使用Vetor3.Distance来计算他们之间的距离,如果这个值大于一个数字,那么就是什么。因为如果你只比较X值,它要么是真要么是假,你不知道它是否离玩家很近,因为你没有设置探测范围。如果你有一些功能想在敌人表演动画时触发,最好把你想要执行的代码放在动画状态机中,这样可以确保它只在那个状态下执行,并且保持代码的整洁。https://docs.unity3d.com/ScriptReference/Vector3.Distance.html对于动画,我发现这很有用:https://www.youtube.com/watch?v=G1bd75R10m4&ab_channel=InfallibleCode

相关问题