【发布时间】:2019-05-13 01:34:52
【问题描述】:
当我在 InputField 中写“LEFT”并单击 UI 按钮时,我的游戏中有一个问题,立方体移动“LEFT”并吃硬币(向上、向下、向右相同)我的问题是当我将这段代码写在玩家移动的下方,但不是慢慢地消失,而不是出现在声明它的位置
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class GameManager : MonoBehaviour
{
public InputField mainInputField;
//public float speed;
public GameObject Player;
public Button Click_me;
public float smoothing = 1f;
public Transform TargetRight1;
public Transform TargetRight2;
public Transform TargetUP;
// Start is called before the first frame update
void Start()
{
}
public void SubmitName()
{
string[] lines = mainInputField.text.Split('\n');
for (int i = 0; i < lines.Length; i++)
{
if (lines[i] == "UP")
{
// moveUP();
StartCoroutine(MyCoroutineUP(TargetUP));
}
else if (lines[i] == "DOWN")
{
//MoveDown();
}
else if (lines[i] == "LEFT")
{
//MoveLeft();
}
else if (lines[i] == "RIGHT")
{
StartCoroutine(MyCoroutineUP(TargetRight1));
}
}
// Click_me.interactable = false;
}
IEnumerator MyCoroutineUP(Transform target)
{
while (Vector3.Distance(Player.transform.position, target.position) > 0.05f)
{
Player.transform.position = Vector3.Lerp(Player.transform.position, target.position, smoothing * Time.deltaTime);
}
yield return null;
}
}
知道我是否将 yield return null; 像这样放在 while 循环中
while (Vector3.Distance(Player.transform.position, target.position) > 0.05f)
{
Player.transform.position = Vector3.Lerp(Player.transform.position, target.position, smoothing * Time.deltaTime);
yield return null;
}
玩家缓慢移动并获得硬币,但如果我有超过 2 法分,例如我写了 LEFT ,当我在第一行调用函数时,向上的 while 循环将无法正常工作。对不起我的英语
【问题讨论】:
-
您的 TargetRight、TargetUp 到底是什么?它们是静止点还是一些硬币的位置?
-
TaargetUP ,TargetRight 是一个空的游戏对象,我希望玩家去它的特定位置