我正在 Unity3d 中开发一款手机游戏,玩家需要使用 transform.position 移动一根比手指稍高一点的棍子,然后用 Force.Mode2D.impulse 挡住一个球。问题是如果球杆移动得太快,球就会穿过球杆。谁能教我如何用力(或任何其他有效的方式)编写仍然根据触摸屏上的手指位置(AKA 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 基本上,如果我不移动它击中的棍子,但如果我快速移动它,球就会直接穿过。(弹跳音效如果太快也不起作用)