这篇教程C++ Collision函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中Collision函数的典型用法代码示例。如果您正苦于以下问题:C++ Collision函数的具体用法?C++ Collision怎么用?C++ Collision使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了Collision函数的30个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: CollisionCollision CollisionManager::collideWithMapPieceAndMovableObjects( Entity *e ){ dFloat contacts[16] = {0.0f}; dFloat normals[16] = {0.0f}; dFloat penetration[16] = {0.0f}; Collision col = Collision(false,normals,contacts,penetration); Vector3 pos = e->getParentSceneNode()->_getFullTransform().getTrans(); Entity* ents[5]; mp->getEntitiesForCollisionFromAPosition( &pos, ents ); for( int i = 0; i < 5; i++ ) { if( ents[i] != NULL) { col = cd->staicAndDynamicCollision( e, ents[i], false ); if( col.isCollided ) return col; } } for(std::vector<Entity*>::const_iterator it=movableObj.begin();it!=movableObj.end(); ++it) { col = cd->staicAndDynamicCollision( e, *it, true); if( col.isCollided ) return col; } return col;}
开发者ID:jfyne,项目名称:Black-Comrade,代码行数:28,
示例2: Collisionvoid CWeaponProjectile::Collision(CFeature* feature){ if(gs->randFloat()>weaponDef->fireStarter) feature->StartFire(); Collision();}
开发者ID:genxinzou,项目名称:svn-spring-archive,代码行数:7,
示例3: mapCollision//only to be used with map pieces where the second element is not transformedCollision CollisionDetection::staicAndDynamicCollision(Entity *e1, Entity *e2, bool dynamic){ dFloat e1Matrix[16]; dFloat e2Matrix[16]; NewtonCollision *e1Collision; NewtonCollision *e2Collision; std::map<Entity *,NewtonCollision *>::const_iterator iter = collisionsMap.find(e1); if(iter != collisionsMap.end()) { e1Collision=iter->second; } else { cout<<"in mapCollision(e1,e2) the collision mesh for enitiy e1 could not be found in (C++)map"<< endl; dFloat contacts[16] = {0.0f}; dFloat normals[16] = {0.0f}; dFloat penetration[16] = {0.0f}; return Collision(false,normals,contacts,penetration); } iter = collisionsMap.find(e2); if(iter != collisionsMap.end()) { e2Collision=iter->second; } else { cout<<"in mapCollision(e1,e2) collision mesh for mapEnitiy e2 could not be found in (C++)map"<<endl; dFloat contacts[16] = {0.0f}; dFloat normals[16] = {0.0f}; dFloat penetration[16] = {0.0f}; return Collision(false,normals,contacts,penetration);; } getMatrix(e1,e1Matrix, true); //allwarys transform getMatrix(e2,e2Matrix, dynamic); //transfrom second entity only if not static dFloat contacts[16]; dFloat normals[16]; dFloat penetration[16]; int numCollisionPoints = NewtonCollisionCollide (newtonWorld, 1, e1Collision, &e1Matrix[0], e2Collision, &e2Matrix[0], &contacts[0], &normals[0], &penetration[0], 0); if (numCollisionPoints > 0) { return Collision(true,normals,contacts,penetration); } else { return Collision(false,normals,contacts,penetration); }}
开发者ID:jfyne,项目名称:Black-Comrade,代码行数:48,
示例4: whilevoid CParticles::Update(float TimePassed){ static float FrictionFraction = 0; FrictionFraction += TimePassed; if(FrictionFraction > 2.0f) // safty messure FrictionFraction = 0; int FrictionCount = 0; while(FrictionFraction > 0.05f) { FrictionCount++; FrictionFraction -= 0.05f; } for(int g = 0; g < NUM_GROUPS; g++) { int i = m_aFirstPart[g]; while(i != -1) { int Next = m_aParticles[i].m_NextPart; //m_aParticles[i].vel += flow_get(m_aParticles[i].pos)*time_passed * m_aParticles[i].flow_affected; m_aParticles[i].m_Vel.y += m_aParticles[i].m_Gravity*TimePassed; for(int f = 0; f < FrictionCount; f++) // apply friction m_aParticles[i].m_Vel *= m_aParticles[i].m_Friction; // move the point vec2 Vel = m_aParticles[i].m_Vel*TimePassed; Collision()->MovePoint(&m_aParticles[i].m_Pos, &Vel, 0.1f+0.9f*frandom(), NULL); m_aParticles[i].m_Vel = Vel* (1.0f/TimePassed); m_aParticles[i].m_Life += TimePassed; m_aParticles[i].m_Rot += TimePassed * m_aParticles[i].m_Rotspeed; // check particle death if(m_aParticles[i].m_Life > m_aParticles[i].m_LifeSpan) { // remove it from the group list if(m_aParticles[i].m_PrevPart != -1) m_aParticles[m_aParticles[i].m_PrevPart].m_NextPart = m_aParticles[i].m_NextPart; else m_aFirstPart[g] = m_aParticles[i].m_NextPart; if(m_aParticles[i].m_NextPart != -1) m_aParticles[m_aParticles[i].m_NextPart].m_PrevPart = m_aParticles[i].m_PrevPart; // insert to the free list if(m_FirstFree != -1) m_aParticles[m_FirstFree].m_PrevPart = i; m_aParticles[i].m_PrevPart = -1; m_aParticles[i].m_NextPart = m_FirstFree; m_FirstFree = i; } i = Next; } }}
开发者ID:wthnonck,项目名称:tdtw,代码行数:59,
示例5: clampvoid CControls::ClampMousePos(){ if(m_pClient->m_Snap.m_SpecInfo.m_Active && !m_pClient->m_Snap.m_SpecInfo.m_UsePosition) { m_MousePos[g_Config.m_ClDummy].x = clamp(m_MousePos[g_Config.m_ClDummy].x, 200.0f, Collision()->GetWidth()*32-200.0f); m_MousePos[g_Config.m_ClDummy].y = clamp(m_MousePos[g_Config.m_ClDummy].y, 200.0f, Collision()->GetHeight()*32-200.0f); } else { float CameraMaxDistance = 200.0f; float FollowFactor = g_Config.m_ClMouseFollowfactor/100.0f; float MouseMax = min(CameraMaxDistance/FollowFactor + g_Config.m_ClMouseDeadzone, (float)g_Config.m_ClMouseMaxDistance); if(length(m_MousePos[g_Config.m_ClDummy]) > MouseMax) m_MousePos[g_Config.m_ClDummy] = normalize(m_MousePos[g_Config.m_ClDummy])*MouseMax; }}
开发者ID:ZAKDC00,项目名称:ddnet,代码行数:17,
示例6: Collisionvoid player::update(float time){ rect.left +=dx*time; Collision(0); rect.top += dy*time; Collision(1); Regeneration(time); frame++; if(frame > 2) frame -= 2; if(dx>0) playerSp.setTextureRect(IntRect(32*(int)frame, 96, 32, 48)); if(dx<0) playerSp.setTextureRect(IntRect(32*(int)frame, 48, 32, 48)); if(dy<0) playerSp.setTextureRect(IntRect(32*(int)frame, 146, 32, 48)); if(dy>0) playerSp.setTextureRect(IntRect(32*(int)frame, 2, 32, 48)); playerSp.setPosition(rect.left, rect.top); dx = 0; dy = 0;}
开发者ID:BorisTopchiev,项目名称:Course_Work1_2D-RPG,代码行数:17,
示例7: add void CollisionPack::load(Core::File& pFile) { const int collisionSize = pFile.readInt32(); for(int i = 0; i < collisionSize; ++i) { add(Collision(pFile)); } }
开发者ID:cantidio,项目名称:gorgonCpp,代码行数:8,
示例8: ObjectsCollisionbool ObjectsCollision(SDL_Rect *rect){ for (int i = 0; i < object_number; i++) if (objects[i].solid && Collision(objects[i].sprite->rect, rect) != NONE) return true; return false;}
开发者ID:maxweis,项目名称:game,代码行数:8,
示例9: Collisionvoid CExplosiveProjectile::Update(){ pos+=speed; speed.y+=gs->gravity; if(!--ttl) Collision();}
开发者ID:genxinzou,项目名称:svn-spring-archive,代码行数:8,
|