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