【发布时间】:2017-09-17 14:57:51
【问题描述】:
我正在 Unity3d 中开发一款手机游戏,玩家需要使用 transform.position 移动一根比手指稍高一点的棍子,并用 Force.Mode2D.impulse 挡住一个球。问题是如果球杆移动得太快,球就会穿过球杆。谁能教我如何使用 Force(或任何其他有效的方式)对仍然根据触摸屏上的手指位置(A.K.A Input.mousePosition)而不是使用按钮移动的摇杆运动进行编码?
如果有人需要信息,代码就是这样;
棍子:
float defencePosX = Mathf.Clamp( Input.mousePosition.x / Screen.width * 5.6f - 2.8f , -2.8f, 2.8f);
float defencePosY = Mathf.Clamp( Input.mousePosition.y / Screen.height * 10 - 4f, -3.3f, -0.5f);
this.transform.position = new Vector3 (defencePosX, defencePosY, 0);
球:
projectileSpeed = Random.Range (maxSpeed, minSpeed);
projectileSwing = Random.Range (-0.001f, 0.001f);
rb.AddForce (new Vector2 (projectileSwing * 1000, 0), ForceMode2D.Impulse);
rb.AddForce (new Vector2 (0, projectileSpeed), ForceMode2D.Impulse);
该错误的视频: https://youtu.be/cr2LVBlP2O0 基本上,如果我不移动它击中的棍子,但如果我快速移动它,球就会直接通过。 (弹跳的声音如果太快也不起作用)
【问题讨论】:
-
我不想要操纵杆。基本上计划是,棒应该到达您手指在屏幕上的任何位置。不要用jistick移动它,而是用它自己的手指位置来移动它。
-
谢谢。我会尝试上传一个游戏内视频,让“棒”变得更清晰。
标签: performance unity3d touchscreen collider