这是我的代码,我想让sprite在旋转到下方时翻转,而不是像视频中那样旋转倒立。有没有什么想法?
using System.Collections;
using Unity.VisualScripting;
using UnityEngine;
public class FishAI_MB : MonoBehaviour
{
FishAIController_MB fishAIController;
public int currentTarget;
public int swimDecision;
void Start()
{
fishAIController = Object.FindObjectOfType<FishAIController_MB>();
if (fishAIController == null)
{
Debug.Log("鱼是空的");
}
StartCoroutine(StartSwimDecicion());
}
IEnumerator StartSwimDecicion()
{
Debug.Log("开始游泳决策");
swimDecision = Random.Range(0, 2);
if (swimDecision == 0)
{
StartCoroutine(SwimToTarget());
}
else if (swimDecision == 1)
{
StartCoroutine(Wait());
}
yield return null;
}
IEnumerator SwimToTarget()
{
Debug.Log("游向目标");
currentTarget = Random.Range(0, fishAIController.targets.Length);
while (Vector2.Distance(transform.position, fishAIController.targets[currentTarget].transform.position) > 0.1f)
{
transform.position = Vector2.MoveTowards(transform.position, fishAIController.targets[currentTarget].transform.position, 1f * Time.deltaTime);
transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(Vector3.forward, fishAIController.targets[currentTarget].transform.position - transform.position), 1f * Time.deltaTime);
if (transform.eulerAngles.x > 90f)
{
transform.localScale = new Vector3(-1f, 1f, 1f);
}
yield return null;
}
StartCoroutine(StartSwimDecicion());
yield return null;
}
IEnumerator Wait()
{
Debug.Log("等待");
yield return new WaitForSeconds(1);
StartCoroutine(StartSwimDecicion());
}
}
评论 (0)