当我将gameObject拖到屏幕边框之外时,它会返回到场景的中心,但它在gameObject的中间穿过边框进入屏幕后就停止移动了。
这个屏幕截图显示了gameObject在被停止后,移动到场景的中心。

我的错误在哪里?我如何使卡片完全移动到场景的中心?
[SerializeField] private Canvas canvas;
Vector3 offset = Vector3.zero;
[SerializeField] private GameObject cardChoice;
private CanvasGroup cardChoiceCG;
private int resolutionX = Screen.width;
private int resolutionY = Screen.height;
[SerializeField] private float distanceToFadeIn;
[SerializeField] private float smoothTime = 0.25f;
private Vector3 velocity = Vector3.zero;
private void Start() {
cardChoiceCG = cardChoice.GetComponent<CanvasGroup>();
}
private void Update() {
Vector3 screenPosition = canvas.worldCamera.WorldToScreenPoint(this.transform.position);
if (screenPosition.x > resolutionX || screenPosition.x < 0f ||
screenPosition.y > resolutionY || screenPosition.y < 0f) {
transform.position = Vector3.SmoothDamp(transform.position, canvas.transform.TransformPoint(Vector3.zero), ref velocity, smoothTime);
}
cardChoiceCG.alpha = Math.Abs((1f / distanceToFadeIn) * (screenPosition.x - (resolutionX / 2)));
}
public void OnPointerDown(PointerEventData eventData) {
RectTransformUtility.ScreenPointToLocalPointInRectangle(canvas.transform as RectTransform, eventData.position, canvas.worldCamera, out Vector2 pos);
offset = transform.position - canvas.transform.TransformPoint(pos);
}
public void OnDrag(PointerEventData eventData) {
RectTransformUtility.ScreenPointToLocalPointInRectangle(canvas.transform as RectTransform, eventData.position, canvas.worldCamera, out Vector2 movePos);
transform.position = canvas.transform.TransformPoint(movePos) + offset;
}}
发布于 2021-12-13 18:51:26
解决了!transform.position = Vector3.SmoothDamp(transform.position, canvas.transform.TransformPoint(Vector3.zero), ref velocity, smoothTime);在if语句中,所以它只能在卡的中心离开屏幕时工作。
https://stackoverflow.com/questions/70318350
复制相似问题