首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Vector3. gameObject ()没有完全移动gameObject

Vector3. gameObject ()没有完全移动gameObject
EN

Stack Overflow用户
提问于 2021-12-11 19:29:53
回答 1查看 106关注 0票数 0

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

这个屏幕截图显示了gameObject在被停止后,移动到场景的中心。

我的错误在哪里?我如何使卡片完全移动到场景的中心?

代码语言:javascript
复制
[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;
}

}

EN

回答 1

Stack Overflow用户

发布于 2021-12-13 18:51:26

解决了!transform.position = Vector3.SmoothDamp(transform.position, canvas.transform.TransformPoint(Vector3.zero), ref velocity, smoothTime);在if语句中,所以它只能在卡的中心离开屏幕时工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70318350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档