第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

當(dāng)其他協(xié)程已經(jīng)在運行時,如何讓協(xié)程啟動并繼續(xù)工作?

當(dāng)其他協(xié)程已經(jīng)在運行時,如何讓協(xié)程啟動并繼續(xù)工作?

C#
隔江千里 2023-09-24 15:50:11
該腳本附著在 3 個立方體上。每個立方體都有另一個標(biāo)簽。using System.Collections;using System.Collections.Generic;using UnityEngine;public class raytest : MonoBehaviour{    public float duration;    public string tag;    private Vector3 originalpos;    private void Start()    {        originalpos = transform.position;    }    private void Update()    {        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);        RaycastHit hit;        if (Physics.Raycast(ray, out hit, 100))        {            if (hit.transform.tag == tag)            {                 if (transform.position.z != originalpos.z - 1)                   StartCoroutine(moveToX(transform, new Vector3(transform.position.x, transform.position.y, transform.position.z - 1), duration));            }            else            {                 StartCoroutine(moveToX(transform, originalpos, duration));            }        }        else        {             //reset             StartCoroutine(moveToX(transform, originalpos, duration));        }    }    bool isMoving = false;    IEnumerator moveToX(Transform fromPosition, Vector3 toPosition, float duration)    {        //Make sure there is only one instance of this function running        if (isMoving)        {            yield break; ///exit if this is still running        }        isMoving = true;        float counter = 0;        //Get the current position of the object to be moved        Vector3 startPos = fromPosition.position;        while (counter < duration)        {            counter += Time.deltaTime;            fromPosition.position = Vector3.Lerp(startPos, toPosition, counter / duration);            yield return null;        }        isMoving = false;    }}當(dāng)鼠標(biāo)懸停在游戲?qū)ο笊喜l(fā)射光線時,該對象開始移動。當(dāng)光線沒有擊中物體時,物體就會移回到原來的位置。但有時,當(dāng)我將鼠標(biāo)快速移動到兩個甚至三個對象上時,下一個對象不會移動,直到第一個對象完成移動。有時,物體同時移動,第一個物體向前移動,而其余物體仍移回原始位置。我不知道為什么有時當(dāng)擊中另一個物體時,它首先等待另一個物體回到原來的位置,然后才開始移動擊中的物體?并且不要同時將它們一前一后移動。這個想法是,如果我擊中一個物體并開始向前移動,一旦我擊中另一個物體,第一個物體應(yīng)該開始向后移動,而擊中的物體應(yīng)該開始平行地向前移動。
查看完整描述

2 回答

?
牛魔王的故事

TA貢獻(xiàn)1830條經(jīng)驗 獲得超3個贊

抱歉,如果我沒有正確理解這個問題,但這就是我收集到的:

如果光線投射擊中物體,則其向單向移動,如果光線投射未擊中物體,則其移回其原始位置。

如果這就是您所需要的——協(xié)程不是讓問題變得過于復(fù)雜了嗎?例如,您可以將CheckIfRaycast.cs腳本附加到每個盒子上。在該腳本Update()方法中,您可以檢查它是否被光線投射擊中,然后進行所需的移動。

多個協(xié)程可能會導(dǎo)致一些奇怪的行為,因此請確保使用StopCoroutine(coroutine name);或停止它們StopAllCoroutines();。

查看完整回答
反對 回復(fù) 2023-09-24
?
慕蓋茨4494581

TA貢獻(xiàn)1850條經(jīng)驗 獲得超11個贊

你應(yīng)該這樣識別你的協(xié)程:


你必須在不同的對象上使用不同的協(xié)程


Coroutine c1;

Coroutine c2;


void runCourotines()

{

    c1 = StartCoroutine(MoveToX());

    c2 = StartCoroutine(MoveToX());

}


void StopCoroutines()

{

    StopCoroutine(c1);

}


查看完整回答
反對 回復(fù) 2023-09-24
  • 2 回答
  • 0 關(guān)注
  • 147 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號