【发布时间】:2020-08-09 16:32:01
【问题描述】:
我意识到这是一个常见问题,但我是编码和 Unity 的新手,我所有的“解决方案”都失败了。敌人沿着 2D 地图上的随机巡逻点移动,但它不是对称的,我希望它每次向那个方向移动时都在 x 轴上翻转
这是我的代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PatrolBehavior : StateMachineBehaviour
{
private GameObject[] patrolPoints;
public float speed;
private int randomPoint;
// OnStateEnter is called when a transition starts and the state machine starts to evaluate this state
override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
patrolPoints = GameObject.FindGameObjectsWithTag("patrolPoints");
randomPoint = Random.Range(0, patrolPoints.Length);
}
// OnStateUpdate is called on each Update frame between OnStateEnter and OnStateExit callbacks
override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
animator.transform.position = Vector2.MoveTowards(animator.transform.position, patrolPoints[randomPoint].transform.position, speed * Time.deltaTime);
if (Vector2.Distance(animator.transform.position, patrolPoints[randomPoint].transform.position) < 0.1f)
{
randomPoint = Random.Range(0, patrolPoints.Length);
}
}
// OnStateExit is called when a transition ends and the state machine finishes evaluating this state
override public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
}
}
在您询问代码之前,它不是我的。我正在学习 99% 的教程,因此我在解决代码问题时毫无用处。我真的很感激更量身定制的回应,而不是 比“使用 animator.transform.Rotate(0, 180, 0);”因为我不知道如何使用它:(。
【问题讨论】:
标签: unity3d