Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何抛出对象Unity3d平台?这个2D_C#_Unity3d - Fatal编程技术网

C# 如何抛出对象Unity3d平台?这个2D

C# 如何抛出对象Unity3d平台?这个2D,c#,unity3d,C#,Unity3d,有一个平台围绕自己的轴旋转(它工作)。我们需要确保,当你改变物体的角度时,平台滚动(它工作),物体旋转方向的突然改变抛出。在LibGdx(+Box2d+Scene2d)中,我做了: 以下代码的本质:数组位置值​​沿Y轴馈送,并将每个值与最后一个倒数第二个值进行比较(以确定移动从下至上开始,即仅当角色向上移动时才开始累积值) public void charStartJump(){ 脉冲Y.add(getBody().getPosition().Y); if(脉冲大小()1){ 如果(pulse_

有一个平台围绕自己的轴旋转(它工作)。我们需要确保,当你改变物体的角度时,平台滚动(它工作),物体旋转方向的突然改变抛出。在LibGdx(+Box2d+Scene2d)中,我做了:

以下代码的本质:数组位置值​​沿Y轴馈送,并将每个值与最后一个倒数第二个值进行比较(以确定移动从下至上开始,即仅当角色向上移动时才开始累积值)

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 ()
}