0426动画等修改

This commit is contained in:
Caiyanpeng committed 2022-04-27 14:48:06 +08:00
1 parent affc775226
commit f47f5c9ff6
20 files changed
+3769 -2348

No files matched your search

@@ -642,6 +642,13 @@ public class RowerHomeScript : PFUIPanel
C2RowerData.EnableChanged += ModeChanged;
FtmsRowerData.RowerResChanged -= ResChanged;
FtmsRowerData.RowerResChanged += ResChanged;
//标志线复位
Transform leftLine = transform.Find("Rower/Modes/Scroll/M2/Track/TraceContainer/LineMeterLeft"),
rightLine = transform.Find("Rower/Modes/Scroll/M2/Track/TraceContainer/LineMeterRight"),
finishLine = transform.Find("Rower/Modes/Scroll/M2/Track/TraceContainer/LineFinish");
leftLine.localPosition = new Vector3(-207.5f+43, leftLine.localPosition.y, leftLine.localPosition.z);
rightLine.localPosition = new Vector3(164.5f+43, rightLine.localPosition.y, rightLine.localPosition.z);
finishLine.localPosition = new Vector3(-237.5f+43, finishLine.localPosition.y, finishLine.localPosition.z);
}
private void ModeChanged(object sender, EventArgs e)
@@ -897,7 +904,7 @@ public class RowerHomeScript : PFUIPanel
#endif
//if (y > 1200) y = 1200;
//拉力条
var rate = ((float)y) * 2 / 1200;
var rate = ((float)y) * 2 / 120;
if (rate > 1) rate = 1f;
left.Find("LeftImage/Value").GetComponent<Image>().fillAmount = rate;
left.Find("RightImage/Value").GetComponent<Image>().fillAmount = rate;
@@ -17,7 +17,7 @@ public class RowerMultiModeScript : MonoBehaviour
[SerializeField]
GameObject rank,trace;
Transform scroll,m2;
Transform scroll,m1,m2;
Vector3 startPosition,boatStartPosition;
TKPanRecognizer pan;
@@ -47,24 +47,40 @@ public class RowerMultiModeScript : MonoBehaviour
{
scroll = transform.Find("Rower/Modes/Scroll");
startPosition = scroll.localPosition;
if (PlayerPrefs.GetFloat("RowerMultiModeLocationX") != 0f)
{
scroll.localPosition = new Vector3(PlayerPrefs.GetFloat("RowerMultiModeLocationX"), startPosition.y, startPosition.z);
foreach (Transform t in transform.Find("Rower/Dots"))
{
t.GetComponent<Image>().color = Utils.HexToColorHtml("#ffffff");
}
if (scroll.localPosition.x >= startPosition.x - (730 / 2))
{
transform.Find("Rower/Dots/d1").GetComponent<Image>().color = Utils.HexToColorHtml("#f93086");
}
else
{
transform.Find("Rower/Dots/d2").GetComponent<Image>().color = Utils.HexToColorHtml("#f93086");
}
}
//if (PlayerPrefs.GetFloat("RowerMultiModeLocationX") != 0f)
//{
// scroll.localPosition = new Vector3(PlayerPrefs.GetFloat("RowerMultiModeLocationX"), startPosition.y, startPosition.z);
// foreach (Transform t in transform.Find("Rower/Dots"))
// {
// t.GetComponent<Image>().color = Utils.HexToColorHtml("#ffffff");
// }
// if (scroll.localPosition.x >= startPosition.x - (730 / 2))
// {
// transform.Find("Rower/Dots/d1").GetComponent<Image>().color = Utils.HexToColorHtml("#f93086");
// }
// else
// {
// transform.Find("Rower/Dots/d2").GetComponent<Image>().color = Utils.HexToColorHtml("#f93086");
// }
//}
AddTouchEvent();
m1 = transform.Find("Rower/Modes/Scroll/M1");
m2 = transform.Find("Rower/Modes/Scroll/M2");
currentModeType = PlayerPrefs.GetInt("CurrentModeType");
Transform aniView = currentModeType == 0 ? m1 : m2, followAniView = currentModeType == 0 ? m2 : m1;
aniView.localPosition = new Vector3(0, aniView.localPosition.y, aniView.localPosition.z);
followAniView.localPosition = new Vector3(730, followAniView.localPosition.y, followAniView.localPosition.z);
string selDot = currentModeType == 0 ? "d1" : "d2";
foreach (Transform t in transform.Find("Rower/Dots"))
{
t.GetComponent<Image>().color = Utils.HexToColorHtml("#ffffff");
}
transform.Find($"Rower/Dots/{selDot}").GetComponent<Image>().color = Utils.HexToColorHtml("#f93086");
print($"模块位置:{m1.localPosition.x},{m2.localPosition.x}");
caches = new Dictionary<string, Texture>();
traceList = new List<Trace>();
//traceList = new List<Trace>()
@@ -143,7 +159,6 @@ public class RowerMultiModeScript : MonoBehaviour
}
userList[i].currentRank = rank;
}
print(string.Join(",", rankDiffDict.OrderBy(x=>x.Value.rank).Select(x => x.Value.diff)));
}
private List<TraceData> HandleData()
{
@@ -226,8 +241,18 @@ public class RowerMultiModeScript : MonoBehaviour
else if (rate < 35) return 0.4f;
else return 0.3f;
}
//标识线
int leftWidth = 0, rightWidth = 100;
private void DisplayTrace(Transform t,TraceData data,TraceData mineData,bool isAni = false)
{
//增加新设计稿逻辑
t.Find("Left").GetComponent<Image>().sprite = data.isMine ? Resources.Load<Sprite>("Images/RowerNew/动画用/bg_myself") : Resources.Load<Sprite>("Images/RowerNew/动画用/bg_other");
t.Find("Main/Boat/Head").GetComponent<Image>().sprite = data.isMine ? Resources.Load<Sprite>("Images/RowerNew/动画用/img_overline_myself") : Resources.Load<Sprite>("Images/RowerNew/动画用/img_overline_others");
t.Find("Main/Boat/Head").gameObject.SetActive(data.currentDistance > 0);
t.Find("Main/Rowed").GetComponent<Image>().color = data.isMine ? Utils.HexToColorHtml("#f9308699") : Utils.HexToColorHtml("#27dfe399");
t.GetComponent<Image>().color = data.isMine ? Utils.HexToColorHtml("#f930861a") : Utils.HexToColorHtml("#27dfe31a");
if (string.IsNullOrEmpty(data.Avatar))
{
t.Find("Left/Avatar").GetComponent<RawImage>().texture = null;
@@ -317,27 +342,91 @@ public class RowerMultiModeScript : MonoBehaviour
var width = t.Find("Main").GetComponent<RectTransform>().sizeDelta.x - t.Find("Main/Boat").GetComponent<RectTransform>().sizeDelta.x;
var diffWidth = data.currentDistance - mineData.currentDistance + 50;
if (data.currentDistance <= 50 && mineData.currentDistance <= 50)
if (mineData.currentDistance <= 50)
{
diffWidth = data.currentDistance;
}
else if (rowerType.type == 1 && rowerType.value - data.currentDistance <= 50)
else if (rowerType.type == 1 && rowerType.value - mineData.currentDistance <= 50)
{
diffWidth = 100 - ((int)rowerType.value - data.currentDistance);
}
Func<float, bool> is0to100 = a => a >= 0 && a <= 100;
//标识线显示
if (data.isMine)
{
Transform leftLine = transform.Find("Rower/Modes/Scroll/M2/Track/TraceContainer/LineMeterLeft"),
rightLine = transform.Find("Rower/Modes/Scroll/M2/Track/TraceContainer/LineMeterRight"),
finishLine = transform.Find("Rower/Modes/Scroll/M2/Track/TraceContainer/LineFinish");
if (rightWidth <= mineData.currentDistance)
{
var tmp = leftLine;
leftLine = rightLine;
rightLine = tmp;
leftLine.name = "LineMeterLeft";
rightLine.name = "LineMeterRight";
}
leftWidth = (mineData.currentDistance / 100) * 100;
rightWidth = leftWidth + 100;
leftLine.gameObject.SetActive(leftWidth != 0);
int leftDiff = leftWidth - mineData.currentDistance, rightDiff = rightWidth - mineData.currentDistance;
leftLine.Find("Text").GetComponent<Text>().text = $"{leftWidth}M";
rightLine.Find("Text").GetComponent<Text>().text = $"{rightWidth}M";
float leftPositionX = ((diffWidth + leftDiff) / 100f) * width + 43,
rightPositionX = ((diffWidth + rightDiff) / 100f) * width + 43;
if (leftPositionX >= -30 && leftPositionX<=415)
{
leftLine.DOLocalMoveX(leftPositionX - 207.5f, 0.9f);
}
else
{
leftLine.localPosition = new Vector3(leftPositionX - 207.5f, leftLine.localPosition.y, leftLine.localPosition.z);
}
if (rightPositionX >= 0 && rightPositionX <= 415)
{
rightLine.DOLocalMoveX(rightPositionX - 207.5f, 0.9f);
}
else
{
rightLine.localPosition = new Vector3(rightPositionX - 207.5f, rightLine.localPosition.y, rightLine.localPosition.z);
}
if (diffWidth >= 0 && diffWidth <= 100)
if (rowerType.type == 1)
{
finishLine.gameObject.SetActive(true);
//终点线
float finishWidth = rowerType.value;
leftLine.gameObject.SetActive(Math.Abs(finishWidth - leftWidth) > 10 && leftWidth != 0);
rightLine.gameObject.SetActive(Math.Abs(finishWidth - rightWidth) > 10);
float finishDiff = finishWidth - mineData.currentDistance;
float finishPositionX = ((diffWidth + finishDiff) / 100f) * width + 43;
if (finishPositionX >= 0 && finishPositionX <= 415)
{
finishLine.DOLocalMoveX(finishPositionX - 207.5f, 0.9f);
}
else
{
finishLine.localPosition = new Vector3(finishPositionX - 207.5f, finishLine.localPosition.y, finishLine.localPosition.z);
}
}
else
{
finishLine.gameObject.SetActive(false);
rightLine.gameObject.SetActive(true);
}
}
//if(!data.isMine) diffWidth = 101;
if (is0to100(diffWidth))
{
var tWidth = (diffWidth / 100f) * width;
t.Find("Main/Boat").gameObject.SetActive(true);
if (isAni)
{
t.Find("Main/Boat").DOLocalMoveX(21.5f + tWidth, 0.6f);
t.Find("Main/Boat").DOLocalMoveX(21.5f + tWidth, 0.9f);
var rowed = t.Find("Main/Rowed").GetComponent<RectTransform>();
rowed.GetComponent<UIGradient>().color1 = data.isMine ? Utils.HexToColorHtml("#f9308633") : Utils.HexToColorHtml("#27bac033");
rowed.GetComponent<UIGradient>().color2 = data.isMine ? Utils.HexToColorHtml("#f930864d") : Utils.HexToColorHtml("#27bac04d");
rowed.Find("Rank").GetComponent<Text>().text = (userList.FindIndex(x => x.UserId == data.UserId) + 1).ToString("00");
rowed.DOSizeDelta(new Vector2(tWidth, rowed.sizeDelta.y), 0.6f);
//rowed.GetComponent<UIGradient>().color1 = data.isMine ? Utils.HexToColorHtml("#f9308633") : Utils.HexToColorHtml("#27bac033");
//rowed.GetComponent<UIGradient>().color2 = data.isMine ? Utils.HexToColorHtml("#f930864d") : Utils.HexToColorHtml("#27bac04d");
t.Find("Left/Rank").GetComponent<Text>().text = (userList.FindIndex(x => x.UserId == data.UserId) + 1).ToString("00");
rowed.DOSizeDelta(new Vector2(tWidth, rowed.sizeDelta.y), 0.9f);
}
else
{
@@ -346,8 +435,10 @@ public class RowerMultiModeScript : MonoBehaviour
}
else
{
t.Find("Main/Boat").localPosition = new Vector3(-21.5f, t.Find("Main/Boat").localPosition.y, t.Find("Main/Boat").localPosition.z);
t.Find("Main/Boat").localPosition = new Vector3(diffWidth < 0 ? -21.5f : 21.5f + width, t.Find("Main/Boat").localPosition.y, t.Find("Main/Boat").localPosition.z);
t.Find("Main/Boat").gameObject.SetActive(false);
var rowed = t.Find("Main/Rowed").GetComponent<RectTransform>();
rowed.sizeDelta = new Vector2(diffWidth < 0 ? 0 : t.Find("Main").GetComponent<RectTransform>().sizeDelta.x, rowed.sizeDelta.y);
}
if (isAni && currentSecond >= 0 && currentSecond < data.list.Count)
{
@@ -355,14 +446,14 @@ public class RowerMultiModeScript : MonoBehaviour
var _d = data.list[currentSecond];
if (currentSecond > 0 && _d.Rate > 0)
{
var spDict = data.isMine?GetComponent<RowerHomeScript>().spriteDict2: GetComponent<RowerHomeScript>().spriteDict;
var spDict = GetComponent<RowerHomeScript>().spriteDict2;
int spDictIndex = 0;
ani.Join(DOTween.To(() => spDictIndex, x => t.Find("Main/Boat").GetComponent<Image>().sprite = spDict[x], 14, 0.3f));
ani.Join(DOTween.To(() => spDictIndex, x => t.Find("Main/Boat/Image").GetComponent<Image>().sprite = spDict[x], 14, 0.3f));
ani.AppendCallback(() =>
{
int spDictIndex2 = 14;
DOTween.To(() => spDictIndex2, x => t.Find("Main/Boat").GetComponent<Image>().sprite = spDict[x], 0, 0.6f);
DOTween.To(() => spDictIndex2, x => t.Find("Main/Boat/Image").GetComponent<Image>().sprite = spDict[x], 0, 0.6f);
});
ani.Play();
//var _pred = data.list[currentSecond - 1];
@@ -380,6 +471,7 @@ public class RowerMultiModeScript : MonoBehaviour
// ani.Play();
//}
}
}
}
private int getStartIndexByMineData()
@@ -453,7 +545,6 @@ public class RowerMultiModeScript : MonoBehaviour
g.SetActive(true);
g.transform.localScale = Vector3.one;
g.transform.localPosition = new Vector3(0, -21.5f - 47f * i);
print($"{i},{g.transform.localPosition}");
//g.transform.Find("T1/p1").GetComponent<Image>().color = RandomColor();
traceList.Add(new Trace { userId = data.UserId, trace = g.transform.Find("T1") });
}
@@ -471,7 +562,6 @@ public class RowerMultiModeScript : MonoBehaviour
{
var data = list[i];
var t = traceList.FirstOrDefault(x => x.userId == data.UserId).trace;
print($"{t.parent.localPosition}");
var diff = rankDiffDict[data.UserId];
DisplayTrace(t.Find("p1"), data, mineData, true);
@@ -869,63 +959,106 @@ public class RowerMultiModeScript : MonoBehaviour
}
transform.Find("Rower/Modes/Scroll/M2/Rank/MyRank").GetComponent<Text>().text = $"<color=#f93086>{userList.FindIndex(x => x.isMine) + 1}</color> / {userList.Count}";
}
// 0 单人 1 影子
int currentModeType = 0;
private void AddTouchEvent()
{
pan = new TKPanRecognizer();
//0 730 0的位置是显示位置
Sequence sq = DOTween.Sequence();
pan.gestureRecognizedEvent += (r) =>
{
if (sq.IsActive() && sq.IsPlaying()) return;
var startPoint = r.startPoint;
if (((RectTransform)transform.Find("Rower/Modes")).isPointInTransfrom(startPoint))
if (((RectTransform)transform.Find("Rower/Modes")).isPointInTransfrom(startPoint)|| ((RectTransform)transform.Find("RankS")).isPointInTransfrom(startPoint))
{
if (scroll.localPosition.x < startPosition.x - (730 / 2)
&& ((RectTransform)transform.Find("RankS")).isPointInTransfrom(startPoint))
{
return;
}
//if (currentModeType == 1 && ((RectTransform)transform.Find("RankS")).isPointInTransfrom(startPoint))
//{
// return;
//}
var offset = pan.deltaTranslation;
if (scroll.localPosition.x >= 30 || scroll.localPosition.x <= -760) return;
scroll.localPosition += new Vector3(offset.x, 0, 0);
//if (scroll.localPosition.x >= 30 || scroll.localPosition.x <= -760) return;
Transform aniView = currentModeType == 0 ? m1 : m2, followAniView = currentModeType == 1 ? m1 : m2;
aniView.localPosition += new Vector3(offset.x, 0, 0);
followAniView.localPosition = aniView.localPosition + new Vector3((aniView.localPosition.x < 0 ? 1 : -1) * 730, 0, 0);
//scroll.localPosition += new Vector3(offset.x, 0, 0);
}
};
pan.gestureCompleteEvent += (r) =>
{
float x = 0;
string selDot = "";
if (Color.Equals(transform.Find("Rower/Dots/d1").GetComponent<Image>().color, Utils.HexToColorHtml("#f93086")))
if (sq.IsActive() && sq.IsPlaying()) return;
sq = DOTween.Sequence();
Transform aniView = currentModeType == 0 ? m1 : m2, followAniView = currentModeType == 1 ? m1 : m2;
if (Math.Abs(aniView.localPosition.x) <= 30)
{
if (scroll.localPosition.x >= startPosition.x - ((730 * 1) / 10))
sq.Join(aniView.DOLocalMoveX(0, 0.5f));
if (aniView.localPosition.x != 0) sq.Join(followAniView.DOLocalMoveX(aniView.localPosition.x > 0 ? -730 : 730, 0.5f));
}
else
{
if (aniView.localPosition.x > 30)
{
x = startPosition.x;
selDot = "d1";
sq.Join(aniView.DOLocalMoveX(730, 0.5f));
}
else if (aniView.localPosition.x < -30)
{
sq.Join(aniView.DOLocalMoveX(-730, 0.5f));
}
sq.Join(followAniView.DOLocalMoveX(0, 0.5f));
sq.onComplete = () =>
{
currentModeType = (currentModeType + 1) % 2;
string selDot = currentModeType == 0 ? "d1" : "d2";
foreach (Transform t in transform.Find("Rower/Dots"))
{
t.GetComponent<Image>().color = Utils.HexToColorHtml("#ffffff");
}
transform.Find($"Rower/Dots/{selDot}").GetComponent<Image>().color = Utils.HexToColorHtml("#f93086");
PlayerPrefs.SetInt("CurrentModeType", currentModeType);
};
}
sq.Play();
return;
//float x = 0;
//string selDot = "";
//if (Color.Equals(transform.Find("Rower/Dots/d1").GetComponent<Image>().color, Utils.HexToColorHtml("#f93086")))
//{
// if (scroll.localPosition.x >= startPosition.x - ((730 * 1) / 10))
// {
// x = startPosition.x;
// selDot = "d1";
}
else
{
print(491);
x = startPosition.x - 730;
selDot = "d2";
}
}
else
{
if (scroll.localPosition.x >= startPosition.x - ((730 * 9) / 10))
{
x = startPosition.x;
selDot = "d1";
}
else
{
x = startPosition.x - 730;
selDot = "d2";
}
}
foreach (Transform t in transform.Find("Rower/Dots"))
{
t.GetComponent<Image>().color = Utils.HexToColorHtml("#ffffff");
}
transform.Find($"Rower/Dots/{selDot}").GetComponent<Image>().color = Utils.HexToColorHtml("#f93086");
scroll.DOLocalMoveX(x, 0.5f);
PlayerPrefs.SetFloat("RowerMultiModeLocationX", x);
// }
// else
// {
// print(491);
// x = startPosition.x - 730;
// selDot = "d2";
// }
//}
//else
//{
// if (scroll.localPosition.x >= startPosition.x - ((730 * 9) / 10))
// {
// x = startPosition.x;
// selDot = "d1";
// }
// else
// {
// x = startPosition.x - 730;
// selDot = "d2";
// }
//}
//foreach (Transform t in transform.Find("Rower/Dots"))
//{
// t.GetComponent<Image>().color = Utils.HexToColorHtml("#ffffff");
//}
//transform.Find($"Rower/Dots/{selDot}").GetComponent<Image>().color = Utils.HexToColorHtml("#f93086");
//scroll.DOLocalMoveX(x, 0.5f);
//PlayerPrefs.SetFloat("RowerMultiModeLocationX", x);
};
TouchKit.addGestureRecognizer(pan);
print("注册触摸事件");
@@ -1021,12 +1154,12 @@ public class RowerMultiModeScript : MonoBehaviour
private List<CountryModel> countryList;
public RowerTaskPanel.RowerType rowerType { get; set; }
int _testdis = 0;
// Update is called once per frame
void Update()
{
#if UNITY_EDITOR
return;
//return;
timer -= Time.deltaTime;
if (timer < 0)
{
@@ -1034,9 +1167,10 @@ public class RowerMultiModeScript : MonoBehaviour
//int a = r.Next(1, 3);
//print($"{a},{a+1}");
//ChangeTrace(a, a+1);
_testdis += 5;
HandleTimeTick(new RowerChartModel()
{
Distance = 15,
Distance = _testdis,
Rate = 35,
});
timer += 1f;