¡¡¡¦¥é¥à¥À¼°¤È¥Ç¥ê¥²¡¼¥È ¡¡¡¦¥á¥½¥Ã¥É¥Á¥§¡¼¥ó ¡¡¡¦DOTween¤ÎÊä´Öµ¡Ç½¤È¼ÂÁõÎã¡¡¡¡¼DOPath ¥á¥½¥Ã¥É¡¢SetEase ¥á¥½¥Ã¥É¡¢OnWaypointChange ¥á¥½¥Ã¥É¡¼ ¡¡¡¦DOTween¤ÎÊä´Öµ¡Ç½¤È¼ÂÁõÎ㢡¡¡¼Tween.Kill ¥á¥½¥Ã¥É¡¢Tween.Pause ¥á¥½¥Ã¥É¡¢Tween.Play ¥á¥½¥Ã¥É¡¼ ¡¡¡¦½èÍý¤Î¥ê¥Õ¥¡¥¯¥¿¥ê¥ó¥° ¡¡¡¦Linq ¤Îµ¡Ç½¤Î¼ÂÁõÎã¡¡¡¡¼Select ¥á¥½¥Ã¥É¡¢ToArray ¥á¥½¥Ã¥É¡¢Sum ¥á¥½¥Ã¥É¡¼
tweenMove = railMoveTarget.transform.DOPath(targetPaths, duration, pathType).SetEase(Ease.Linear).OnWaypointChange((waypointIndex) => CheckArrivalDestination(waypointIndex));
¡Á.OnWaypointChange((waypointIndex) => CheckArrivalDestination(waypointIndex));
¡Á.OnWaypointChange(SetHoge(waypointIndex));¡¡¡¡¡¡¡¡¡¡¡¡¡¡¢
delegate int Hoge(int x); // ¥Ç¥ê¥²¡¼¥È¤ÎÀë¸À private void SetHoge(int waypointIndex) { Hoge h = new Hoge(CheckArrivalDestination) // ¥Ç¥ê¥²¡¼¥È¤Î½é´ü²½ Hoge ·¿¤Î h ÊÑ¿ô¤Ë CheckArrivalDestination ¥á¥½¥Ã¥É¤òÂåÆþ¤·¤Æ¤¤¤ë h(waypointIndex); // h ÊÑ¿ô¤ËÂåÆþ¤µ¤ì¤Æ¤¤¤ë CheckArrivalDestination ¥á¥½¥Ã¥É¤ò¼Â¹Ô¤·¡¢°ú¿ô¤È¤·¤Æ waypointIndex ÊÑ¿ô¤òÅϤ·¤Æ¤¤¤ë }¡¡¡¡¡¡¡¡¡¡¡¡¡¡¢
private void CheckArrivalDestination(int waypointIndex) { }
¡Á.OnWaypointChange((waypointIndex) => CheckArrivalDestination(waypointIndex));¡¡¡¡¡¡¡¡¡¡¡¡¡¡¢
private void CheckArrivalDestination(int waypointIndex) { }
(waypointIndex) => CheckArrivalDestination(waypointIndex); // (int waypointIndex) => ¤Èµ½Ò¤·¤Ê¤¯¤Æ¤è¤¤
MicroSoft
¥é¥à¥À¼° - C# ¥ê¥Õ¥¡¥ì¥ó¥¹
https://docs.microsoft.com/ja-jp/dotnet/csharp/lan...
Qiita @toRisouP ÍÍ
¡ÚC#¡Û¤ï¤«¤Ã¤¿"¤Ä¤â¤ê"¤Ë¤Ê¤ì¤ë¡Ö¥é¥à¥À¼°¡×²òÀâ
https://qiita.com/toRisouP/items/98cc4966d392b7f21...
¡¡// ³ÆÃÏÅÀ¤Ë¸þ¤±¤Æ°ÜÆ° transform.DOPath(paths, 1000 / moveSpeed).SetEase(Ease.Linear);
DOTween
Documentation
http://dotween.demigiant.com/documentation.php
¡¡tweenMove = railMoveTarget.transform.DOPath(targetPaths, duration, pathType).SetEase(Ease.Linear).OnWaypointChange((waypointIndex) => CheckArrivalDestination(waypointIndex));
Qiita @BEATnonanka ÍÍ
DOTween´°Á´¤ËÍý²ò¤¹¤ë¤½¤Î4 DOPathÊÔ
https://qiita.com/BEATnonanka/items/50cacac803f88f...
¥²¡¼¥àUI¥Í¥Ã¥È ÍÍ
DOTween¤Î¥¤¡¼¥¸¥ó¥°°ìÍ÷¤òÀ¤³¦°ì¾Ü¤·¤¯&ʬ¤«¤ê¤ä¤¹¤¯ÀâÌÀ¤¹¤ë
https://game-ui.net/?p=835
¡¡¡Á.OnWaypointChange((waypointIndex) => CheckArrivalDestination(waypointIndex));
¡¡tweenMove = railMoveTarget.transform.DOPath(targetPaths, duration, pathType).SetEase(Ease.Linear).OnWaypointChange((waypointIndex) => CheckArrivalDestination(waypointIndex));
¡¡tweenMove = railMoveTarget.transform.DOPath(targetPaths, duration, pathType).SetEase(Ease.Linear).OnWaypointChange(CheckArrivalDestination);
Qiita @AzuQiita ÍÍ
DOTween¤Î¥³¡¼¥ë¥Ð¥Ã¥¯¤ò¤¤¤¯¤Ä¤«¾Ò²ð
https://qiita.com/AzuQiita/items/822e382473e6c0db8...
// Àë¸À¥Õ¥£¡¼¥ë¥É ¡¡private Tween tweenMove; // Tween ·¿¤ÎÊÑ¿ô // Tween ·¿¤ÎÊÑ¿ô¤Ë¤Ï DOTween ¤Î½èÍý¤òÂåÆþ¤Ç¤¤ë ¡¡¡¡¡¡¡¡¡¡¢ // ³ÆÃÏÅÀ¤Ë¸þ¤±¤Æ°ÜÆ°¡£º£¸å¤³¤Î½èÍý¤òÀ©¸æ¤¹¤ë¤¿¤á¡¢Tween ·¿¤ÎÊÑ¿ô¤Ë DOPath ¥á¥½¥Ã¥É¤Î½èÍý¤òÂåÆþ¤·¤Æ¤ª¤¯ tweenMove = railMoveTarget.transform.DOPath(targetPaths, duration, pathType).SetEase(Ease.Linear).OnWaypointChange((waypointIndex) => CheckArrivalDestination(waypointIndex)); ¡¡// DOTween ¤Î½èÍý¤òÇË´þ(½ªÎ»)¤¹¤ë tweenMove.Kill();
¡¡ // ½èÍý¤ò°ì»þÄä»ß PauseMove(); /// <summary> /// ¥ì¡¼¥ë°ÜÆ°¤Î°ì»þÄä»ß /// </summary> public void PauseMove() { // °ì»þÄä»ß tweenMove.Pause(); }
¡¡¡¡railMoveTarget.DOPause();
// °ÜÆ°ºÆ³« ResumeMove(); /// <summary> /// ¥ì¡¼¥ë°ÜÆ°¤ÎºÆ³« /// </summary> public void ResumeMove() { // °ÜÆ°ºÆ³« tweenMove.Play(); }
¡¡¡¡railMoveTarget.DOPlay();
/// <summary> /// ¥ì¡¼¥ë°ÜÆ°¤Î³«»Ï /// </summary> /// <returns></returns> public IEnumerator StartRailMove() { yield return null; ////* ¤³¤³¤«¤é *//// // °ÜÆ°¤¹¤ëÃÏÅÀ¤ò¼èÆÀ¤¹¤ë¤¿¤á¤ÎÇÛÎó¤Î½é´ü²½ Vector3[] paths = new Vector3[currentRailPathData.GetPathTrans().Length]; float totalTime = 0; ¡¡¡¡¡¡¡¡// °ÜÆ°¤¹¤ë°ÌÃÖ¾ðÊó¤È»þ´Ö¤ò½çÈÖ¤ËÇÛÎó¤Ë¼èÆÀ for (int i = 0; i < currentRailPathData.GetPathTrans().Length; i++) { paths[i] = currentRailPathData.GetPathTrans()[i].position; totalTime += currentRailPathData.GetRailMoveDurations()[i]; } ////* ¤³¤³¤Þ¤Ç *//// Debug.Log(totalTime); [Ãæά] }
/// <summary> /// ¥ì¡¼¥ë°ÜÆ°¤Î³«»Ï /// </summary> /// <returns></returns> public IEnumerator StartRailMove() { yield return null; ////* ¤³¤³¤«¤é *//// // °ÜÆ°Àè¤Î¥Ñ¥¹¤Î¾ðÊ󤫤é Position ¤Î¾ðÊó¤À¤±¤òÃê½Ð¤·¤ÆÇÛÎó¤òºîÀ® Vector3[] paths = currentRailPathData.GetPathTrans().Select(x => x.position).ToArray(); // °ÜÆ°Àè¤Î¥Ñ¥¹¤Î°ÜÆ°»þ´Ö¤ò¹ç·× float totalTime = currentRailPathData.GetRailMoveDurations().Sum(); ////* ¤³¤³¤Þ¤Ç *//// Debug.Log(totalTime); [Ãæά] }
using System.Linq;
SamuraiBlogÍÍ
¡ÚC#ÆþÌç¡ÛLINQ¤Î»È¤¤ÊýÁí¤Þ¤È¤á(Select¡¢Where¡¢GroupBy¤Ê¤É)
https://www.sejuku.net/blog/56519
ÃÏÊ¿Àþ¤Ë¹Ô¤¯ÍÍ
LINQ¤Î³ÈÄ¥¥á¥½¥Ã¥É°ìÍ÷¤È¡¢¤Û¤ÜÁ´Éô¤Î¥µ¥ó¥×¥ë¤òºî¤Ã¤Æ¤ß¤Þ¤·¤¿¡£
https://yujisoftware.hatenablog.com/entry/20111031...
¡¡¡¡// °ÜÆ°Àè¤Î¥Ñ¥¹¤Î¾ðÊ󤫤é Position ¤Î¾ðÊó¤À¤±¤òÃê½Ð¤·¤ÆÇÛÎó¤òºîÀ® Vector3[] paths = currentRailPathData.GetPathTrans().Select(x => x.position).ToArray();
MicroSoft
Enumerable.Select ¥á¥½¥Ã¥É
https://docs.microsoft.com/ja-jp/dotnet/api/system...
.NET Column ÍÍ
¡ÚLINQ¤ÎSelect¥á¥½¥Ã¥É¤Î½ñ¤Êý3Áª¡ÃLINQ¤Ë¤Ä¤¤¤Æ¤Ê¤É¤ò¾Ò²ð
https://www.fenet.jp/dotnet/column/language/1454/
Qiita @t_takahari ÍÍ
LINQ¤Î¤½¤ÎForEach¡¢¼Â¤ÏSelect¤Ç½ñ¤´¹¤¨¤é¤ì¤ë¤«¤â
https://qiita.com/t_takahari/items/6dc72f48b1ebdfe...
¡¡¡¡// °ÜÆ°Àè¤Î¥Ñ¥¹¤Î¾ðÊ󤫤é Position ¤Î¾ðÊó¤À¤±¤òÃê½Ð¤·¤ÆÇÛÎó¤òºîÀ® Vector3[] paths = currentRailPathData.GetPathTrans().Select(x => x.position).ToArray();
MicroSoft
Enumerable.ToArray<TSource>(IEnumerable<TSource>) ¥á¥½¥Ã¥É
https://docs.microsoft.com/ja-jp/dotnet/api/system...
Qiita @Marimoiro ÍÍ
LINQ¥Á¡¼¥È¥·¡¼¥ÈŪ¤Ê¤â¤Î
https://qiita.com/Marimoiro/items/0e119b47d65bf138...
Qiita @mounntainn ÍÍ
LINQ¤Ë¤Ä¤¤¤Æ¤ÎÈ÷˺Ͽ
https://qiita.com/mounntainn/items/e8b8f94a15ec4fe...
// °ÜÆ°Àè¤Î¥Ñ¥¹¤Î°ÜÆ°»þ´Ö¤ò¹ç·× float totalTime = currentRailPathData.GetRailMoveDurations().Sum();
MicroSoft
Enumerable.Sum ¥á¥½¥Ã¥É
https://docs.microsoft.com/ja-jp/dotnet/api/system...
Qiita @RyotaMurohoshi ÍÍ
~https://qiita.com/RyotaMurohoshi/items/d4a6750a798...
Qitta @logikuma ÍÍ
¡ÚC#¡ÛLINQÈ÷˺Ͽ2 ¡Á½¸·×ÊÔ¡Á
https://qiita.com/logikuma/items/d4f87ff4c308a7606...