我正在尝试为练习创建一个Pong克隆。我用二维设置我的项目。
桨叶具有以下组件:
kinematic
)trigger
)球有以下组成部分:
kinematic
)trigger
)通过拖动控制球拍(用户在屏幕左/右拖动手指)。我为此使用了EasyTouch
插件。
然后我用这个脚本移动球:
void Update () {
transform.position += new Vector3(xSpeed * Time.deltaTime, ySpeed * Time.deltaTime);
}
这是我检测到碰撞并重新定向球的方式(水平物体是顶部/底部/桨状,而垂直物体是左/右屏幕边界):
void OnTriggerEnter2D(Collider2D c)
{
if(c.gameObject.tag.Equals("Horizontal"))
{
ySpeed *= -1;
}
else if(c.gameObject.tag.Equals("Vertical"))
{
xSpeed *= -1;
}
}
问题是球有时会穿过桨,这对最终用户来说可能看起来很麻烦。我在网上搜索过此内容,并尝试将刚体的Collision Detection
属性设置为Continuous
而不是Discrete
。但球在某些时候仍然会穿过球拍。
任何人都知道如何解决这个问题?我如何设置/编码游戏我做错了什么?
由于
答案 0 :(得分:2)
如代码所示,变换由您自己控制,而连续检测需要控制物理引擎,因此请尝试使用物理引擎控制gameObject,而不是使用自己的代码修改位置。
答案 1 :(得分:2)
你有一个非常简单的概念错误。 如果对撞机已进入其他对撞机,则获取OnTriggerEnter2D(Collider2D)。换句话说,你可以浏览对象。
您需要使用此功能:
INSERT INTO "testpoint_location" ("point")
VALUES (Transform(GeomFromText('POINT(15.0 16.0)', 210), 4326))
我建议你观看这个Unity教程,因为它解释了所有这些非常好:https://unity3d.com/learn/tutorials/modules/beginner/physics/colliders
其他信息:http://docs.unity3d.com/ScriptReference/Collider2D.html
感谢。