Ver.0.3.0.33

This commit is contained in:
2025-07-08 08:32:46 +00:00
parent 99f4dd67c2
commit 0ad5e29917
6831 changed files with 695623 additions and 234455 deletions
@@ -1,11 +1,8 @@
using System.Collections;
using System.Collections.Generic;
using DG.Tweening;
using UnityEngine;
using AibisDream.FixSystem;
using UnityEngine.UI;
using Unity.VisualScripting;
using AibisDream;
using AibisDream.Kit;
public class PunchTapeSystem : MonoBehaviour
@@ -14,84 +11,54 @@ public class PunchTapeSystem : MonoBehaviour
public RectTransform punchTape;
public GameObject blackPanel;
public float stepInterval = 0.1f; // Interval between each printing step
public float stepDistance = 0.5f; // Distance moved per step
public float[] stepPatterns = { 0.3f, 0.5f, 0.2f, 0.4f, 0.6f }; // Pattern of intervals to simulate rhythmic printing
public GameObject tempPunchTapeGroup;
private void Awake()
{
FixSystemCenter.SystemDic.Register(this);
}
// public void Update()
// {
// if (Input.GetKeyDown(KeyCode.P))
// {
// StartPrinting(2);
// }
// }
public void StartPrinting(int tapeCount)
private void OnDestroy()
{
StartCoroutine(PrintPunchTapes(tapeCount));
FixSystemCenter.SystemDic.Unregister<PunchTapeSystem>();
}
public IEnumerator PrintPunchTapes(int tapeCount)
{
blackPanel.SetActive(true);
Vector3 machineStartPos = punchTapeMachine.anchoredPosition;
Vector3 tapeStartPos = punchTape.anchoredPosition;
Color tapeStartColor = punchTape.GetComponent<Image>().color;
while (tapeCount > 0)
{
// Move the printer to x = 2 over 1 second
yield return punchTapeMachine.DOAnchorPos(new Vector2(-1252f, punchTapeMachine.anchoredPosition.y), 1f).WaitForCompletion();
// 0-0.7秒:打印机移动到指定位置
AudioManager.Instance.PlaySfx("event:/Scriptal/typing");
// Gradually move the punch tape to x = -3.8 with rhythmic pattern
yield return punchTapeMachine.DOAnchorPos(new Vector2(-1252f, punchTapeMachine.anchoredPosition.y), 0.7f)
.WaitForCompletion();
// 0.7-1秒:停顿
yield return new WaitForSeconds(0.3f);
// 1-1.6秒:纸带匀速弹出
Vector2 targetPosition = new Vector2(796f, punchTape.anchoredPosition.y);
int patternIndex = 0;
yield return punchTape.DOAnchorPos(targetPosition, 0.6f).WaitForCompletion();
while (Vector2.Distance(punchTape.anchoredPosition, targetPosition) > stepDistance)
{
punchTape.anchoredPosition = Vector3.MoveTowards(punchTape.anchoredPosition, targetPosition, stepDistance);
yield return new WaitForSeconds(stepPatterns[patternIndex % stepPatterns.Length]);
patternIndex++;
}
// 1.6-2.3秒:停顿
yield return new WaitForSeconds(0.7f);
// Ensure exact final position
punchTape.anchoredPosition = targetPosition;
// 2.3-2.7秒:纸带淡出
yield return punchTape.GetComponent<Image>().DOFade(0f, 0.4f).WaitForCompletion();
// Fade out the punch tape over 1 second
yield return punchTape.GetComponent<Image>().DOFade(0f, 1f).WaitForCompletion();
// Reset the punch tape position and opacity
// 重置纸带位置和透明度
punchTape.anchoredPosition = tapeStartPos;
punchTape.GetComponent<Image>().color = tapeStartColor;
// Decrement the tape count
tapeCount--;
}
// Move the printer back to x = 0 over 1 second
yield return punchTapeMachine.DOAnchorPos(new Vector2(-1428.186f, punchTapeMachine.anchoredPosition.y), 1f).WaitForCompletion();
// 打印机返回原位
yield return punchTapeMachine.DOAnchorPos(new Vector2(-1428.186f, punchTapeMachine.anchoredPosition.y), 1f)
.WaitForCompletion();
blackPanel.SetActive(false);
}
public void Temp_showPunchTapeGroup()
{
tempPunchTapeGroup.SetActive(true);
}
public IEnumerator Temp_HidePunchTapeGroup()
{
foreach(SpriteRenderer s in tempPunchTapeGroup.GetComponentsInChildren<SpriteRenderer>())
{
s.DOFade(0,0.5f);
}
yield return new WaitForSeconds(0.5f);
tempPunchTapeGroup.SetActive(false);
}
}
}