Партиклы в оружии
|
|
kon_alex | Дата: Вторник, 19.07.2011, 19:29 | Сообщение # 1 |
Newbie
Группа: Пользователи
Сообщений: 9
Репутация: 0
Статус: Offline
| Решил сделать оружие по типу луча вортигонта, но партиклы выходят из рандомного места http://s2.ipicture.ru/Gallery/Viewfull/5054444.html http://s1.ipicture.ru/Gallery/Viewfull/5054529.html
Делал по тутору гаусса, менял код так:
Code //DrawBeam( startPos, tr.endpos, 9.6, true ); // рисуем луч const char *k="muzzle"; unsigned char uchAttachment; uchAttachment=LookupAttachment(k); EntityMessageBegin( this, true ); WRITE_BYTE( 0 ); WRITE_BYTE( uchAttachment ); //WRITE_VEC3COORD( pOwner->Weapon_ShootPosition() ); WRITE_VEC3COORD( tr.endpos ); MessageEnd();
Далее полная аналогия с вортигонтом(клиент):
Code void C_WeaponVort::ReceiveMessage( int classID, bf_read &msg ) { // Is the message for a sub-class? if ( classID != GetClientClass()->m_ClassID ) { BaseClass::ReceiveMessage( classID, msg ); return; } int messageType = msg.ReadByte(); switch( messageType ) { case 0: { // Find our attachment point unsigned char nAttachment = msg.ReadByte(); // Get our attachment position Vector vecStart; QAngle vecAngles; GetAttachment( nAttachment, vecStart, vecAngles );
// Get the final position we'll strike Vector vecEndPos; msg.ReadBitVec3Coord( vecEndPos );
// Place a beam between the two points CNewParticleEffect *pEffect = ParticleProp()->Create( "vortigaunt_beam", PATTACH_POINT_FOLLOW, "missle" ); if ( pEffect ) { pEffect->SetControlPoint( 0, vecStart ); pEffect->SetControlPoint( 1, vecEndPos ); } } break;
case 1: { int nIndex = msg.ReadLong(); C_BaseEntity *pEnt = ClientEntityList().GetBaseEntityFromHandle( ClientEntityList().EntIndexToHandle( nIndex ) );
if ( pEnt ) { unsigned char nAttachment = msg.ReadByte(); Vector vecEndPos; msg.ReadBitVec3Coord( vecEndPos ); Vector vecNormal; msg.ReadBitVec3Normal( vecNormal ); CNewParticleEffect *pEffect = pEnt->ParticleProp()->Create( "vortigaunt_beam_charge", PATTACH_POINT_FOLLOW, nAttachment ); if ( pEffect ) { // Set the control point's angles to be the surface normal we struct Vector vecRight, vecUp; VectorVectors( vecNormal, vecRight, vecUp ); pEffect->SetControlPointOrientation( 1, vecNormal, vecRight, vecUp ); pEffect->SetControlPoint( 1, vecEndPos ); } } } break; default: AssertMsg1( false, "Received unknown message %d", messageType); } }
Объясните, в чем может быть проблема
|
|
| |
HellMapper | Дата: Вторник, 19.07.2011, 21:31 | Сообщение # 2 |
Scout
Группа: Проверенные
Сообщений: 588
Репутация: 27
Статус: Offline
| Измени аттачменты на дуло оружия. Смотришь Model Viewer и делаешь по аналогии с обычной пушкой.
Я живу в будущем City 15
Если Вы можете, играя в "Counter-Strike: Sourсe", посадить хедшот ножом через стену в попу своему противнику, который находится на другом конце карты, на другом сервере, и который играет в "Team Fortress 2" и находится под действием убер-заряда, то знайте, что в плане читерства вы достигли совершенства. ©IPa
|
|
| |
kon_alex | Дата: Вторник, 19.07.2011, 21:37 | Сообщение # 3 |
Newbie
Группа: Пользователи
Сообщений: 9
Репутация: 0
Статус: Offline
| так muzzle - аттачмент пистолета, его модель и используется
|
|
| |
Andreazzz | Дата: Вторник, 19.07.2011, 22:30 | Сообщение # 4 |
Spy
Группа: Проверенные
Сообщений: 996
Репутация: 55
Статус: Offline
| kon_alex, ну не совсем так, я делал это по другому (и да, нужно использовать "muzzle")
|
|
| |
kon_alex | Дата: Вторник, 19.07.2011, 23:27 | Сообщение # 5 |
Newbie
Группа: Пользователи
Сообщений: 9
Репутация: 0
Статус: Offline
| Andreazzz, а как надо?
|
|
| |
Andreazzz | Дата: Среда, 20.07.2011, 11:52 | Сообщение # 6 |
Spy
Группа: Проверенные
Сообщений: 996
Репутация: 55
Статус: Offline
| Ну не в ReceiveMessage это точно, и не ParticleProp а DispatchParticleEffect. Работать нужно в Think Получится что-то в роде этого: Code CBaseViewModel *vm = pPlayer->GetViewModel(); if( vm ) { if( pPlayer->m_nButtons & IN_ATTACK ) DispatchParticleEffect( "vortigaunt_beam", PATTACH_POINT_FOLLOW, vm, vm->LookupAttachment( "missle" ), true ); elseif( pPlayer->m_nButtons & IN_ATTACK2 ) DispatchParticleEffect( "vortigaunt_beam_charge", PATTACH_POINT_FOLLOW, vm, vm->LookupAttachment( "missle" ), true ); else StopParticleEffects( vm ); }
Было отредактированно - Andreazzz - Среда, 20.07.2011, 12:00 |
|
| |
kon_alex | Дата: Четверг, 21.07.2011, 21:41 | Сообщение # 7 |
Newbie
Группа: Пользователи
Сообщений: 9
Репутация: 0
Статус: Offline
| Подскажите, как исправить ошибку Bone access not allowed. Кстати попробовал Dispatch, вышло криво(только на дальних дистанциях и без стен рядом работает нормально), а Prop стал работать
|
|
| |
Andreazzz | Дата: Четверг, 21.07.2011, 23:10 | Сообщение # 8 |
Spy
Группа: Проверенные
Сообщений: 996
Репутация: 55
Статус: Offline
| kon_alex, ну здесь тебе решать, что выбирать.
|
|
| |
kon_alex | Дата: Среда, 03.08.2011, 19:46 | Сообщение # 9 |
Newbie
Группа: Пользователи
Сообщений: 9
Репутация: 0
Статус: Offline
| Подскажите, как все-таки сделать нормально Dispatch работает аттач, но приходит в рандомную точку (http://ipicture.ru/uploads/20110803/ktGYrIrA.jpg) Prop приводит в нужную точку, но старт идет с середины игрока (http://ipicture.ru/uploads/20110803/V4rna85I.jpg)
|
|
| |
Hitmen | Дата: Четверг, 04.08.2011, 00:12 | Сообщение # 10 |
Spy
Группа: Проверенные
Сообщений: 2104
Репутация: 84
Статус: Offline
| Аттач: Code Vector myVector1; GetAttachment( "ТУТ_ИМЯ_АТТАЧА_НА_МОДЕЛИ", myVector1 );
А если хочешь сделать партикль аттачнутый на конец ствола, то попробуй такой код: Code Vector vecShootOrigin2; QAngle angShootDir2; GetAttachment( LookupAttachment("ИМЯ_АТТАЧА_НА_МОДЕЛИ", vecShootOrigin2, angShootDir2)); DispatchParticleEffect( "ИМЯ_ПАРТИКЛЯ", vecShootOrigin2, angShootDir2);
Туториалы по программированию, мои и слегка изменённые чужие. :)
Sp@ce Project Blog Sp@ce Project Web-Site
I'm in spaaace! Я в контакте Я в Facebook'е
|
|
| |