【问题标题】:Unity 2D - Instantiated prefab inconsistent position across devices?Unity 2D - 跨设备实例化的预制件位置不一致?
【发布时间】:2016-04-11 21:11:25
【问题描述】:

我使用 unity 5 制作了一个 2d android 赛车游戏。我正在我的手机上测试游戏(Asus Zenfone 5 with lollipop),它运行完美,也测试了其他手机上的游戏(Samsung Galaxy Duos with jellybean)完美地运行好吧。

但是当我在三星 Galaxy s5 上测试它时,实例化的预制件具有不同的 Y 坐标值(它们从屏幕中间开始实例化,并且假设从顶角实例化) .

Vector3 carPos = new Vector3 (Random.Range(-0.95f, 1.0f), transform.position.y, transform.position.z);
carNo = Random.Range(0, 4);
Instantiate (cars[carNo], carPos, transform.rotation);

【问题讨论】:

    标签: android unity5


    【解决方案1】:

    对于 2D 游戏,您使用 Vector2s 而非 Vector3s 来保存坐标。我相信会出现这个问题,因为不同设备的屏幕尺寸 不同。要解决此问题,请尝试在定位时使用 Screen.width 或 Screen.height 等通用测量值。例如,如果你试图在屏幕的右上角实例化一辆汽车,你会使用


    Vector2 carPos = new Vector2(Screen.width, Screen.height);
    Instantiate (cars[carNo], carPos, transform.rotation);
    

    您可以使用 Random.Range() 实现汽车相对于 Screen.width 的随机 x 坐标。

    【讨论】:

    • 我一直在尝试您的答案,但我怎样才能将 screen.height 值更改为浮点数中的世界值。
    猜你喜欢
    • 2014-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多