You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

95 lines
3.1 KiB

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour
{
Animator animator;
public Transform walkPos;
public Transform RunPos;
public Transform man;
2 years ago
Queue<IEnumerator> queue=new Queue<IEnumerator>();
bool finishFlag = true;
private void Awake()
{
2 years ago
animator = GetComponentInChildren<Animator>();
}
2 years ago
public void WalkAndSquat() {
queue.Enqueue(MovePosByWalk(transform, walkPos.position, 2));
queue.Enqueue(MovePosByRun(transform, RunPos.position, 3f));
2 years ago
queue.Enqueue(Squat(transform, man));
StartCoroutine(StartQueue());
}
2 years ago
IEnumerator MovePosByWalk(Transform ts, Vector3 targetPos, float speed) {
animator.SetBool("Walk", true);
while (true) {
yield return new WaitForFixedUpdate();
Vector3 moveDir = (targetPos - ts.position).normalized;
ts.position += moveDir * Time.fixedDeltaTime * speed;
2 years ago
Quaternion targetRotation = Quaternion.LookRotation(targetPos - ts.position);
ts.rotation = Quaternion.Lerp(ts.rotation, targetRotation, 0.01f);
if (Vector3.Distance(ts.position, targetPos) <= 0.1) {
ts.position = targetPos;
animator.SetBool("Walk", false);
finishFlag = true;
Debug.Log("<22>߽<EFBFBD><DFBD><EFBFBD>");
yield break;
}
}
}
2 years ago
IEnumerator MovePosByRun(Transform ts, Vector3 targetPos, float speed)
{
animator.SetBool("Run", true);
while (true)
{
yield return new WaitForFixedUpdate();
Vector3 moveDir = (targetPos - ts.position).normalized;
ts.position += moveDir * Time.fixedDeltaTime * speed;
2 years ago
Quaternion targetRotation = Quaternion.LookRotation(targetPos - ts.position);
ts.rotation = Quaternion.Lerp(ts.rotation, targetRotation, 0.01f);
2 years ago
if (Vector3.Distance(ts.position, targetPos) <= 0.1)
{
ts.position = targetPos;
animator.SetBool("Run", false);
finishFlag = true;
Debug.Log("<22>ܽ<EFBFBD><DCBD><EFBFBD>");
2 years ago
yield break;
}
}
}
IEnumerator Squat(Transform my, Transform ts) {
transform.position = new Vector3(-46.55f, 1.560401f, 130.989f);
2 years ago
transform.localEulerAngles = new Vector3(0,270,0);
animator.SetTrigger("Squat");
2 years ago
Invoke("E_OpenQuestion", 1);
2 years ago
yield return null;
}
2 years ago
void E_OpenQuestion(){
EventManager.Instance.emit("Question");
Level1Manager.Instance.AddOperate(Level1Const.operate1Info);
}
bool Finish() {
return finishFlag;
}
2 years ago
IEnumerator StartQueue() {
while (true) {
yield return new WaitUntil(Finish);
if (queue.Count != 0)
{
StartCoroutine(queue.Dequeue());
finishFlag = false;
yield return null;
}
else {
yield break;
}
}
}
}