TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

Weapon no Maya

Por:   •  6/5/2015  •  Trabalho acadêmico  •  1.686 Palavras (7 Páginas)  •  392 Visualizações

Página 1 de 7

Aula 08 – Arma de fogo de 2 mãos de tiros diferentes.

-Introdução e proposta:

Nessa última aula do módulo, veremos como criar uma arma de fogo de 2 mãos que tenham 2 tipos de

tiro. O tiro primário é uma metralhadora que usará as mesmas partículas da pistola. Já o segundo tiro

será um lançador de mísseis. A mesh da arma utilizada será a vista abaixo (a arma deve ser uma skeletal

mesh):

Arma no UDK:

Salve essa arma no mesmo pacote que você já tinha, ou então cole o pacote novo na pasta:

C:\UDK\UDK-2011-08\UDKGame\Content\UT3\Weapons

-Scripts:

Algumas partes dos scripts desta arma, você já conhece pois criou a pístola da aula 05. Alguma são

novas, devido a aplicação diferenciada da arma. Desta vez usaremos 4 scripts: Weapon, Attachment,

Ammo e Projectile, este último para criar o projétil lançado pelo tiro secundário.

-Criando o Script Weapon:

Passo 01: Extenderemos novamente o script Weapon:

class MyWeap_MachineGun extends UTWeapon;

Passo 02: Aqui criaremos algumas variáveis para controlar os tamanhos dos Muzzles e também para

criar os contadores de munição, já que utilizaremos munições diferentes.

var float MuzzleFlashScale, MuzzleFlashScale1;

var name MuzzleFlashSocket1;

var int AmmoCount0, AmmoCount1, MaxAmmoCount1;

var int FireAmmo, FireAmmo1;

var bool AmmoEmpty, AmmoEmpty1;

Passo 03: Vamos criar uma função que informa a arma para começar contando a munição da

metralhadora:

// faz a arma começar com a munição do primeiro tiro

simulated function PostBeginPlay()

{

super.PostBeginPlay();

AmmoCount = AmmoCount0;

}

Passo 04: Devemos então agora criar um pequeno evento para checar em um tempo muito rápido

(milisegundos) qual tiro está sendo usado, para ver se precisamos mudar a munição contada:

// evento que é calculado a cada 100 milisegundos

event Tick(float DeltaTime)

{

// checa se o tiro sendo usado é o primeiro

if(Instigator.FiringMode == 0)

AmmoCount = AmmoCount0; // altera a munição para a do primeiro tiro

if(AmmoCount0 == 0 && AmmoCount1 >= 1) // checa se a munição do primeiro tiro

está vazia e a do segundo não está

{

AmmoEmpty = true;

AmmoCount = AmmoCount1; // altera a munição para o segundo tiro

}

else

AmmoEmpty = false;

// checa se o tiro sendo usado é o segundo

if(Instigator.FiringMode == 1)

AmmoCount = AmmoCount1; // altera a munição para a do segundo tiro

if(AmmoCount1 == 0 && AmmoCount0 >= 1) // checa se a munição do segundo tiro

está vazia e a do primeiro não está

{

AmmoEmpty1 = true;

AmmoCount = AmmoCount0; // altera a munição para o primeiro tiro

}

else

AmmoEmpty1 = false;

}

Passo 05: Criaremos um evento para checar a quantidade de munição gasta e reposta:

// calcula quanta munição foi gasta e adicionada

function int AddAmmo(int Amount)

{

if(Instigator.FiringMode == 0 || Amount >= 1)

AmmoCount0 = Clamp(AmmoCount0 + Amount,0,MaxAmmoCount);

if(Instigator.FiringMode == 1 || Amount >= 1)

AmmoCount1 = Clamp(AmmoCount1 + Amount,0,MaxAmmoCount1);

// checa se o cheat de munição infinita está ativado

if (UTInventoryManager(InvManager) == None ||

UTInventoryManager(InvManager).bInfiniteAmmo)

{

if(AmmoCount0 <= 0)

AmmoCount0 = MaxAmmoCount;

if(AmmoCount1 <= 0)

AmmoCount1 = MaxAmmoCount1;

}

return AmmoCount;

}

simulated function FireAmmunition()

{

// checa se o tiro sendo usado é o primeiro

if(Instigator.FiringMode == 0)

{

if(AmmoEmpty == true) // checa se a munição do primiro tiro está

vazia

PlayEmptySound(); // ativa o som de arma vazia

else

{

super.FireAmmunition();

}

}

// checa se o tiro sendo usado é o segundo

...

Baixar como (para membros premium)  txt (16.3 Kb)   pdf (67.2 Kb)   docx (21.9 Kb)  
Continuar por mais 6 páginas »
Disponível apenas no TrabalhosGratuitos.com