C# 如何抛出对象Unity3d平台?这个2D
有一个平台围绕自己的轴旋转(它工作)。我们需要确保,当你改变物体的角度时,平台滚动(它工作),物体旋转方向的突然改变抛出。在LibGdx(+Box2d+Scene2d)中,我做了: 以下代码的本质:数组位置值沿Y轴馈送,并将每个值与最后一个倒数第二个值进行比较(以确定移动从下至上开始,即仅当角色向上移动时才开始累积值)C# 如何抛出对象Unity3d平台?这个2D,c#,unity3d,C#,Unity3d,有一个平台围绕自己的轴旋转(它工作)。我们需要确保,当你改变物体的角度时,平台滚动(它工作),物体旋转方向的突然改变抛出。在LibGdx(+Box2d+Scene2d)中,我做了: 以下代码的本质:数组位置值沿Y轴馈送,并将每个值与最后一个倒数第二个值进行比较(以确定移动从下至上开始,即仅当角色向上移动时才开始累积值) public void charStartJump(){ 脉冲Y.add(getBody().getPosition().Y); if(脉冲大小()1){ 如果(pulse_
public void charStartJump(){
脉冲Y.add(getBody().getPosition().Y);
if(脉冲大小()1){
如果(pulse_Y.get)(pulse_Y.size()-1),我可能只是为自己说话,但我无法从你所写的内容中清楚地解读你的问题。请你在你的问题中添加更多细节,说明你正在努力实现什么,以及你目前的方法如何无法满足你的要求?(额外的澄清也将不胜感激-例如,物体旋转方向的突然变化是什么意思?Upd:图片我不确定我是否清楚。但是。Unity的物理有什么问题?为什么不使用它?根据图片,我不会说目标是特殊的或“反物理”.Unity应该根据您定义的刚体/重力/拖动/等设置完全按照您所描述的进行操作。我非常喜欢您的问题,但是,默认的物理2D是否有效?我可能只是为自己说话,但我无法从您所写的内容中清楚地解读您的问题。请您在您的问题中添加有关您所做操作的其他详细信息We’我们正在努力实现,以及您当前的方法如何无法满足您的要求?(还需要进一步澄清-例如,物体旋转方向的突然变化是什么意思?)Upd:图片我不确定我是否清楚。但是,Unity的物理有什么问题?为什么不使用它?根据图片,我不会说目标是特殊的或“反物理”.Unity应该根据您定义的刚体/重力/拖动/等设置完全按照您描述的进行操作。我非常喜欢您的问题,但是,默认的physic2d工作吗?
@Override
public void beginContact(Contact contact) { // It begins cooperation
Body a = contact.getFixtureA().getBody();
Body b = contact.getFixtureB().getBody();
if ((BodyUtils.bodyIsRunner(a) && BodyUtils.bodyIsGround(b)) ||
(BodyUtils.bodyIsGround(a) && BodyUtils.bodyIsRunner(b))) {
character.charStartJump(); // below
}
}
public void charStartJump() {
impulse_Y.add(getBody().getPosition().y);
if (impulse_Y.size() <= 1) {
impulse_Y_start_point = impulse_Y.get(impulse_Y.size() - 1);
} else if (impulse_Y.size() > 1) {
if (impulse_Y.get(impulse_Y.size() - 1) <= impulse_Y.get(impulse_Y.size() - 2))
impulse_Y_start_point = impulse_Y.get(impulse_Y.size() - 1);
else
impulse_Y_start_point = impulse_Y.get(impulse_Y.size() - 1) - impulse_Y_start_point;
}
}
@Override
public void endContact(Contact contact) { // end collaboration
Body a = contact.getFixtureA().getBody();
Body b = contact.getFixtureB().getBody();
if ((BodyUtils.bodyIsRunner(a) && BodyUtils.bodyIsGround(b)) ||
(BodyUtils.bodyIsGround(a) && BodyUtils.bodyIsRunner(b))) {
character.charJump(); // below
}
}
public void charJump() {
// applied to the body with the direction of the momentum 0 on the X axis , take the momentum gained by Y.
// The pulse is applied to the center of the body . true - the object is not sleeping (isAweking = true)
body.applyLinearImpulse(new Vector2(0, impulse_Y_start_point*1.2f), body.getWorldCenter(), true);
impulse_Y.clear();
impulse_Y.trimToSize(); // in these two lines of cleanse arrayList charStartJump ()
}