- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
所以,现在,我正在尝试开发一款游戏的直升机系统。我遇到的问题是,我想编辑直升机的重力,并且仅当我在其中/使用它时,但现在它导致所有使用 PhysX 的对象失去它的重力。
这是我正在使用的函数。 g_pPhysicsWorld->PhysXScene->setGravity(HeliGravity);
可能是导致问题的原因。
void obj_Vehicle::HelicopterPhysx() // controls of helicopter
{
if (isHelicopter == true)
{
const float fTimePassed = r3dGetFrameTime();
PxTransform pose = vd->vehicle->getRigidDynamicActor()->getGlobalPose();
r3dVector angles;
r3dPoint3D position(0,0,0);
PxVec3 HeliGravity(0,0,0);
if (HasDriver() && HSpeed > 70)
{
if (Keyboard->IsPressed(kbsRight)) // Rotate Left
{
if (!(Keyboard->IsPressed(kbsW) || Keyboard->IsPressed(kbsS)))
HelyX+=0.5f;
}
else if (Keyboard->IsPressed(kbsLeft)) // rotate Right
{
if (!(Keyboard->IsPressed(kbsW) || Keyboard->IsPressed(kbsS)))
HelyX-=0.5f;
}
if (Keyboard->IsPressed(kbsW) && distanceFromGround>=5) // move front
{
HeliGravity = PxVec3(0,-1.0,0);
if (HelyY<15.0f)
HelyY+=0.5f;
//HelyUp=-0.1f;
if (HelyFB>1 && FB>=0)
FB=HelyFB-=0.25f;
}
else {
if (FB >0 && HelyFB<20)
FB=HelyFB+=0.05f;
if (HelyY>0)
{
HelyY-=0.5f;
if (HelyY<0) HelyY = 0;
}
}
if (Keyboard->IsPressed(kbsS) && distanceFromGround>=5) // Move back
{
if (HelyY>-15.0f)
HelyY-=0.5f;
if (HelyFB>5 && FB<=0)
FB=abs(HelyFB-=0.5f)*-1;
}
else {
if (FB <0 && HelyFB<20)
FB=abs(HelyFB+=0.05f)*-1;
if (HelyY<0)
{
HelyY+=0.5f;
}
}
if (Keyboard->IsPressed(kbsD) && distanceFromGround>=10) // move Right
{
if (HelyZ>-30.0)
HelyZ-=0.5f;
if ((Keyboard->IsPressed(kbsW) || Keyboard->IsPressed(kbsS)))
{
HelyX+=0.5f;
}
else {
if (HelyLR>5 && LR>=0)
LR=HelyLR-=0.5f;
}
}
else {
if (LR >0 && HelyLR<20)
LR=HelyLR+=0.1f;
if (HelyZ<0)
{
HelyZ+=0.5f;
}
}
if (Keyboard->IsPressed(kbsA) && distanceFromGround>=10) // move Left
{
if (HelyZ<30.0)
HelyZ+=0.5f;
if ((Keyboard->IsPressed(kbsW) || Keyboard->IsPressed(kbsS)))
{
HelyX-=0.5f;
}
else {
if (HelyLR>5 && LR<=0)
LR=abs(HelyLR-=0.5f)*-1;
}
}
else {
if (LR <0 && HelyLR<20)
LR=abs(HelyLR+=0.1f)*-1;
if (HelyZ>0)
{
HelyZ-=0.5f;
if (HelyZ<0) HelyZ = 0;
}
}
if (Keyboard->IsPressed(kbsQ) && HSpeed > 70) // move up
{
//r3dOutToLog("###### distanceFromGround %f\n",distanceFromGround);
//if (distanceFromGround<100)
//HelyUp=0.1f;
HeliGravity = PxVec3(0,2,0); //m70b1jr gravity
}
else if (Keyboard->IsPressed(kbsZ)) // Move down
{
HeliGravity = PxVec3(0,-1,0);
//HelyUp=-0.1f;
}
}
else {
if (distanceFromGround>0)
{
if (HSpeed < 50 || !CheckFuel())
{
//r3dOutToLog("######## HSpeed: %f\n",HSpeed);
//Gravity = PxVec3(0,-9.81f,0);
if (HelyUp>0)
HelyUp=-0.1f;
}
}
}
pose.p.y+=HelyUp;
if (HelyFB>=20)
FB=0;
if (HelyLR>=20)
LR=0;
//r3dOutToLog("######## HelyFB: %f FB: %f\n",HelyFB,FB);
position = r3dPoint3D(pose.p.x,pose.p.y,pose.p.z) + (GetvForw() / FB) + (GetvRight() / LR);
if (HelyUp<0)
{
HelyUp+=0.001f;
}
else if (HelyUp>0)
{
HelyUp-=0.001f;
if (HelyUp<0) HelyUp = 0;
}
//g_pPhysicsWorld->PhysXScene->setGravity(HeliGravity); // m70 test
D3DXMATRIX RotateMatrix,RotateMatrix2,toOrigin,fromOrigin,boneTransform;
D3DXMatrixTranslation(&toOrigin, -GetPosition().x, -GetPosition().y, -GetPosition().z);
D3DXMatrixTranslation(&fromOrigin, pose.p.x, pose.p.y, pose.p.z);
D3DXMatrixRotationYawPitchRoll(&RotateMatrix,R3D_DEG2RAD(HelyX),R3D_DEG2RAD(HelyY),R3D_DEG2RAD(HelyZ));
D3DXMatrixMultiply(&boneTransform, &fromOrigin, &RotateMatrix);
D3DXMatrixMultiply(&boneTransform, &boneTransform, &toOrigin);
PxMat33 orientation(PxVec3(boneTransform._11, boneTransform._12, boneTransform._13),
PxVec3(boneTransform._21, boneTransform._22, boneTransform._23),
PxVec3(boneTransform._31, boneTransform._32, boneTransform._33));
pose.q = PxQuat(orientation);
/*D3DMATRIX m = GetRotationMatrix();*/
pose.p.x=position.x;//HelyFB;
pose.p.z=position.z;//HelyLR;
/*HelyLR=position.z;
HelyFB=position.x;*/
vd->vehicle->getRigidDynamicActor()->setGlobalPose(pose);
SetPosition(r3dPoint3D(position.x,pose.p.y,position.z)); //Another test
r3dPoint3D vel = GetVelocity();
vel.x *= pose.p.x;
vel.y *= pose.p.y;
vel.z *= pose.p.y;
if(vel.Length() < 0.001f) vel = r3dPoint3D(0, 0, 0);
SetVelocity(vel);
}
}
最佳答案
setGravity()
用于设置影响所有 actor 的场景的全局重力。
如果你想要一个 Actor 的“个人”引力,你必须为那个 Actor 禁用全局引力:
PxActor::setActorFlag(PxActorFlag::eDISABLE_GRAVITY, false);
然后给actor加上自己的力:
void PxRigidBody::addForce(const PxVec3& force, PxForceMode::Enum mode, bool autowake);
请注意,必须在每个更新帧上调用 addForce()
。
关于c++ - 在 PhysX 中编辑一个 Actor 的重力,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32802999/
我正在制作一个 2D Java 游戏,我正在尝试找出如何添加基本的“重力” 我当前的代码是这样的: public void checkCollision() { Rectangle p
如何动态设置重力? Bitmap bmp; im = new ImageView (this); bmp=getbmp(img); im.setImageBitmap(bmp); 现在我想把图片放在
我编写了一个简单的代码来获取跳球的位置,但我肯定错过了一些东西,因为我得到了这个: 这是获取 x 和 y 位置的代码: public Vector2f[] draw() { float x =
我正在开发我的第一个 XNA 2D 游戏,但遇到了一个小问题。如果我跳,我的 Sprite 会跳但不会倒下。我还有另一个问题,用户可以按住 spacebar 跳到他想要的高度,我不知道如何阻止他这样做
在 xml 布局中,设置了 TextView 的重力。在某些情况下,我想在我的编码中更改 TextView 的重力。我尝试这样设置: title.setGravity(Gravity.START);
好吧,我正在使用 andengine 和 box2d 扩展你看,我的物体从地面(红色矩形)飞到相机的屋顶(黄色),我不明白这是怎么回事 这是我的代码的一部分, @Override public Eng
我正在使用 Box2d 模拟自上而下的空间环境。我有一个应用了脉冲的物体,它将在“行星”附近飞行(通过太空)。世界本身没有重力,但我想设置具有单独重力的行星和恒星,这样其他动态物体就会掉落/被拉向它们
我用主体中的 setInterval(fall,1000) 函数触发的 parseInt(its.style.top) 编写了一个 img 元素,使其“落下”到窗口中。 Moves()函数触发后发生错
我目前正在用 Java 制作 2D 平台游戏。我是初学者,所以放轻松。我对游戏中的重力有疑问。我使用不同的变量来进行坠落和跳跃。我正在使用平铺 map 。那么让我们进入正题吧。我的跌倒方法是这样的 -
我需要获取 LinearLayout 的重力值。我检查了文档,只找到了如何设置它 ( setGravity(value) )。任何人都知道是否有办法获得 LinearLayout 引力? 谢谢 最佳答
我正在使用 C++ 自学 SDL、OpenGL 等。在线教程帮助我创建了一个在屏幕上移动的盒子和一个盒子无法通过的壁架... 我没能找到解释和展示如何让盒子跳跃或四处跳跃的教程。理想情况下,我希望我的
有人知道类似电缆(或基本上任何绳子或绳索)行为的好例子吗? 我目前正在编写一个半模块化合成器。我正在使用 Raphael.js 作为电缆。但它们似乎太僵硬了。我想添加一些物理,所以当我拖动一端而另一端
我有两个问题: 1. 是否可以检索 b2Body 的当前 X 坐标?我知道 API GetPosition 但这还不够具体,我需要专门的 X 坐标。 2. 是否可以在我的 UIAcceleromete
我的布局中有一个 AppCompatCheckBox。这是它的样子: 问题是填充或边距或重力不是我想要的方式。 Box 和左边框之间有一个小间隙。我将 gravity 设置为 left/start p
我的场景: 一个球(动态物理体) 一个立方体作为平台(静态物理体) 默认场景重力 默认质量 当我运行场景时,球正确地落在平台上。但是当我添加运动时(渲染方法中 x 轴上的增量时间运动),球会奇怪地/缓
我有下一个观点: 我希望它看起来像这样: 在第一个中,绿色 ImageButton 的背景位于左上角。在第二个中,绿色 ImageButton 的背景位于中央。(背景图片以绿色方 block 大小为准
我需要能够将 FAB 的 app:layout_anchorGravity="center" 从 center 更改为 bottom|start代码。我找到了这个例子: CoordinatorLayo
我正在用 javascript/html5 编写一个简单的游戏,我正在尝试实现“重力”。 我的代码是这样的: gravity = 4; acceleration = 1.1; function gam
此代码在黑色屏幕上显示图像 assassin1.png,静止不动地位于 (50, 80) 位置。 目标是在该图像上引发 pymunk 引力,使其掉落。我关注了 pymunk tutorial它是使用
我正在尝试为我的 WordPress Gravity 表单 PDF 设置样式,但我似乎无法摆脱两列之间的空白。没有真正的方法来检查 PDF 上的元素,因此更改它的 CSS 并不容易。 我尝试输出实际的
我是一名优秀的程序员,十分优秀!