SchultzGames
Para tirar dúvidas, crie um tópico especifico na área "Dúvidas em Geral" e aguarde ser respondido. Evite comentar em tópicos não relacionados a sua dúvida Very Happy
TÓPICOS RECENTES:
Tópico:
Postado em:
Postado por:
Verificar inventario
Unity Ads ou AdMob!
Render texture invertida
Como fazer barco estilo minecraft ou estilo navio que da pra andar dentro
Como fazer para o tiro ir para a direção onde o cano está apontado e não para cima
Como locomover um trem
Me ajudem, com a criação de terreno !
Pequeno problema com no Debug
Como fazer Escudo seguir a movimentação do Player?
Building System
TELEPORT 2D
Adicionar linhas no TXT pelo codigo
[TUTORIAL] Sistema de inventário Sobrevivência
Formação De Equipe Pra Criar RPG
Como não perder qualidade nas texturas 2d?
IDB JAM #10
MOVIMENTAÇÃO EM 8 DIREÇÕES.
animações não sendo reproduzidas
Seguir um raio no raycast a partir do ponto da tela clicado
Personagem morrer ao cair da tela
Deixar objeto invisível.
[____TÓPICO LIVRE____] FALE O QUE QUISER (Parte 2)
Divulgaçao de Battle of Worlds
[Resolvido]Problema nesse pequeno script
Movimentação
Puzzle para jogo de terror , abrir portas etc..
Script para mudar posição do personagem
Baixos Brasil - Jogo de Carro Brasileiro!
Como saber quando minha animação terminou?
system inventory , craft
ajuda
Aplicar roupa no Rig do blender...
Project Valley of Trees - Primeiro nome que faz sentido KK
A.S TRUCK
Som de correr não para de tocar
Reproduzir audio no if c## e musica continuar tocando entre cenas.
Como Colocar Pontuação Final na GUI de GAME OVER
Unity 2017 Iluminação RealTime VS Baked [Comparaçâo]
DUVIDA : Raycast
Programador para equipe
Da pra colocar sisteminha em um jogo da unity pra trolar quem for piratear o jogo?
Como colocar musicas em sequencia para tocar?
Trajetória da bala com predição
Ajudinha com Bug
[RESOLVIDO] Poblema com Rigidbody
[DEVLOG] Projeto - Girl Blade (download Pré-Alpha)
Erro ao bulidar para Windows(.exe)
Mudar a gravidade com rotação (sensores do smartphone)
Problemas na detecção de colisão
Trabalhar simultaneamente na Unity
Movimetaçao infinita
(duvida)pq isso acontece com o inimigo?
[TUTORIAL] Unity 5 - Wheel Collider, veículos, suspensão realista.
[DUVIDA] Como alterar a intensidade do ChromaticAberration do PostProcessing?
Joystick VR não funciona no ios
Problema na minha animação feita na Unity
[TUTORIAL] Unity 5 - Como criar o próprio FPS Controller
IA para inimigo seguir o jogador ( Plataforma )
Tirar Fotos no Unity 5 FPS
[TUTORIAL] Cena inicial de CARREGAMENTO, creditos, logo, etc [UNITY 5]
Como Limitar Spawn de Hordas
Desmembramento
Exemplo de UI com abas - utilizando toggles e toggle group.
Ajuda Blender
Quando Instancio botão ele não aparece no canvas
Sistema de pesca 2D
[TUTORIAL] Derrubar arvores e dropar madeiras dela
Auto-Complete do Visual Studios
Metroidvania - procuro membros
Criação de Update para Seus jogos?
Blender, animação + Unity
Preciso de alguém que desenvolva Craft, e Inventario com sistema de Bolsas, Pago bem
Detectar Hit
[MODELADOR] Procurando Projetos
Carákas que Tops WO.OW
Anexar GameObject por scrit
Como cria um sistema de seve game
[DUVIDA] Trocar botoes no teclado por joystick UI
Efeito de Audio
Bug de sumir todas as modelagens 3D na unity 2017
Quero fazer minha propria lens flare
Menu para selecao de cena
Dificuldades com programação no Unity 5 2D
Bug ? offline e online
Conflito de ações HELP
como saber a posição que a particula bateu?
Formação de Equipe Battle of Worlds
[JOGO EM BETA] Batalha de Canhão
Jogo de sobrevivência na ilha PRE-Alpha
Inimigo ao encostar morre e player leva dano UNITY 5 2D
Como faço blocos que somem so clikando neles 1 vez?
Light Bug
Como criar inventário simples no unity
Como fasso para que clico em um botao e aumente o volume junto com grave em uma musica?
como que criar um sitema tipo o do rocket league
tem como criar um modelo no sketchup e exportar pra unity, mas sem os componentes
(duvida)pq aconteçe isso com a luz
Como posso deixar o MENU do meu jogo adequado ao monitor?
Dúvida com o Update
Ontem à(s) 10:40 pm
Ontem à(s) 10:03 pm
Ontem à(s) 9:37 pm
Ontem à(s) 9:36 pm
Ontem à(s) 9:31 pm
Ontem à(s) 7:17 pm
Ontem à(s) 6:16 pm
Ontem à(s) 5:37 pm
Ontem à(s) 4:02 pm
Ontem à(s) 3:54 pm
Ontem à(s) 12:19 pm
Ontem à(s) 12:17 pm
Ontem à(s) 11:00 am
Ontem à(s) 9:00 am
Qua Set 20, 2017 11:07 pm
Qua Set 20, 2017 9:27 pm
Qua Set 20, 2017 7:22 pm
Qua Set 20, 2017 7:17 pm
Qua Set 20, 2017 6:01 pm
Qua Set 20, 2017 9:57 am
Qua Set 20, 2017 7:07 am
Qua Set 20, 2017 12:13 am
Ter Set 19, 2017 11:53 pm
Ter Set 19, 2017 10:15 pm
Ter Set 19, 2017 8:34 pm
Ter Set 19, 2017 7:40 pm
Ter Set 19, 2017 4:29 pm
Ter Set 19, 2017 12:25 pm
Ter Set 19, 2017 12:14 pm
Ter Set 19, 2017 10:55 am
Ter Set 19, 2017 10:26 am
Ter Set 19, 2017 8:21 am
Ter Set 19, 2017 2:42 am
Seg Set 18, 2017 10:20 pm
Seg Set 18, 2017 9:16 pm
Seg Set 18, 2017 8:40 pm
Seg Set 18, 2017 8:39 pm
Seg Set 18, 2017 8:08 pm
Seg Set 18, 2017 4:33 pm
Seg Set 18, 2017 2:22 pm
Seg Set 18, 2017 12:15 pm
Seg Set 18, 2017 9:33 am
Seg Set 18, 2017 8:21 am
Seg Set 18, 2017 12:59 am
Dom Set 17, 2017 5:04 pm
Dom Set 17, 2017 3:45 pm
Dom Set 17, 2017 10:49 am
Sab Set 16, 2017 11:18 pm
Sab Set 16, 2017 5:57 pm
Sab Set 16, 2017 4:10 pm
Sab Set 16, 2017 3:05 pm
Sab Set 16, 2017 2:23 pm
Sab Set 16, 2017 12:40 pm
Sab Set 16, 2017 12:16 pm
Sab Set 16, 2017 10:17 am
Sab Set 16, 2017 9:53 am
Sab Set 16, 2017 9:26 am
Sab Set 16, 2017 9:10 am
Sex Set 15, 2017 11:51 pm
Sex Set 15, 2017 8:27 pm
Sex Set 15, 2017 7:27 pm
Sex Set 15, 2017 6:17 pm
Sex Set 15, 2017 3:08 pm
Sex Set 15, 2017 11:19 am
Sex Set 15, 2017 9:43 am
Qui Set 14, 2017 11:50 pm
Qui Set 14, 2017 9:08 pm
Qui Set 14, 2017 3:17 pm
Qui Set 14, 2017 1:55 pm
Qui Set 14, 2017 12:13 pm
Qui Set 14, 2017 10:07 am
Qua Set 13, 2017 9:52 pm
Qua Set 13, 2017 11:34 am
Ter Set 12, 2017 10:33 pm
Ter Set 12, 2017 10:21 pm
Ter Set 12, 2017 9:34 pm
Ter Set 12, 2017 8:52 pm
Ter Set 12, 2017 8:51 pm
Ter Set 12, 2017 7:05 pm
Ter Set 12, 2017 6:53 pm
Ter Set 12, 2017 6:51 pm
Ter Set 12, 2017 3:04 pm
Ter Set 12, 2017 2:04 pm
Ter Set 12, 2017 11:54 am
Ter Set 12, 2017 9:59 am
Ter Set 12, 2017 9:43 am
Ter Set 12, 2017 12:17 am
Seg Set 11, 2017 8:54 pm
Seg Set 11, 2017 8:48 pm
Seg Set 11, 2017 8:12 pm
Seg Set 11, 2017 7:18 pm
Seg Set 11, 2017 6:15 pm
Seg Set 11, 2017 6:02 pm
Seg Set 11, 2017 5:31 pm
Seg Set 11, 2017 5:22 pm
Seg Set 11, 2017 5:06 pm
Seg Set 11, 2017 4:53 pm
Seg Set 11, 2017 4:17 pm
Seg Set 11, 2017 4:15 pm
916anderson
Duarte
g
Unidade3d5
Weslley
Zecandy
EndStarsProgramming2
ManoTrevor
JorgeLuizxd
AndyShow
Weslley
Weslley
916anderson
Bruno
JorgeLuizxd
dimmuo
Weslley
Phph09
Weslley
Bruno
GabriG07
Dom3000
Dom3000
g
Weslley
Zecandy
Weslley
Duarte
artplayer
PatifeCraft
Lteo
Fagner
Madness
PatifeCraft
dstaroski
eduu10
JorgeLuizxd
MateusWTP
Weslley
Brunotrinkss
guimaraf
Weslley
guimaraf
ManoTrevor
PedroL123
dstaroski
GabriG07
Brgs886
Madness
Fagner
PedroL123
glauco
Callyde Jr
JorgeLuizxd
Henrique Ramires
Weslley
Weslley
Weslley
Weslley
Weslley
Weslley
916anderson
rafaelllsd
Fagner
Fagner
rafaelllsd
PatifeCraft
Weslley
Carlin
artplayer
Ronnisz
Jhonatham1
Callyde Jr
mrariel2011
AndyShow
Fagner
PatifeCraft
Alerson Software
AndyShow
AndyShow
AndyShow
Alessandra Matheus
Lteo
Callyde Jr
Weslley
Dom3000
Dom3000
dstaroski
dstaroski
guilhermeprata
DUT
Duarte
PatifeCraft
heliab125
MarcosSchultz
MarcosSchultz
glauco
MarcosSchultz
MarcosSchultz

(Jogo De FPS) Código para tirar HP ao entrar em lugares não permitidos

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

DÚVIDA (Jogo De FPS) Código para tirar HP ao entrar em lugares não permitidos

Mensagem por Sheyk em Sab Jul 02, 2016 12:44 am

Olá galera bom dia a Todos (a)

Bom, Eu gostaria de saber como eu posso fazer para quando o player for para um lugares não permitidos no mapa (tentar Bugar ou sair por engano) como posso fazer para ele perder HP até morrer ?
avatar
Sheyk
Avançado
Avançado

PONTOS : 706
REPUTAÇÃO : 23
Idade : 18
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: (Jogo De FPS) Código para tirar HP ao entrar em lugares não permitidos

Mensagem por Sheyk em Sab Jul 02, 2016 7:02 am

Me ajudem por favor galera  Very Happy
avatar
Sheyk
Avançado
Avançado

PONTOS : 706
REPUTAÇÃO : 23
Idade : 18
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: (Jogo De FPS) Código para tirar HP ao entrar em lugares não permitidos

Mensagem por John Rambo em Sab Jul 02, 2016 8:58 am

Você já tentou?
avatar
John Rambo
Moderador

Masculino PONTOS : 2016
REPUTAÇÃO : 407
Idade : 18
Áreas de atuação :
Unity;
Programação;
Modelagem;
Criação de cenários;
Sonorização;

Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: (Jogo De FPS) Código para tirar HP ao entrar em lugares não permitidos

Mensagem por Sheyk em Sab Jul 02, 2016 9:01 am

Sim, mais Eu só consegui fazer o Colíder invisível...
Mais eu não sei fazer para tirar HP do player
avatar
Sheyk
Avançado
Avançado

PONTOS : 706
REPUTAÇÃO : 23
Idade : 18
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: (Jogo De FPS) Código para tirar HP ao entrar em lugares não permitidos

Mensagem por John Rambo em Sab Jul 02, 2016 9:04 am

OK... Se vc não tiver com pressa eu posso te dar uma ajuda daqui uns 90 minutos.. É que agora to um pouco ocupado
avatar
John Rambo
Moderador

Masculino PONTOS : 2016
REPUTAÇÃO : 407
Idade : 18
Áreas de atuação :
Unity;
Programação;
Modelagem;
Criação de cenários;
Sonorização;

Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: (Jogo De FPS) Código para tirar HP ao entrar em lugares não permitidos

Mensagem por Sheyk em Sab Jul 02, 2016 9:06 am

Show, não estou com pressa não, hj vou fazer bastante coisas no meu jogo!!! Very Happy
avatar
Sheyk
Avançado
Avançado

PONTOS : 706
REPUTAÇÃO : 23
Idade : 18
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: (Jogo De FPS) Código para tirar HP ao entrar em lugares não permitidos

Mensagem por John Rambo em Sab Jul 02, 2016 10:10 am

OK preciso do script do seu player
avatar
John Rambo
Moderador

Masculino PONTOS : 2016
REPUTAÇÃO : 407
Idade : 18
Áreas de atuação :
Unity;
Programação;
Modelagem;
Criação de cenários;
Sonorização;

Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: (Jogo De FPS) Código para tirar HP ao entrar em lugares não permitidos

Mensagem por Sheyk em Sab Jul 02, 2016 10:24 am

//New FPS
//@2016

using UnityEngine;
using System.Collections;
using Hashtable = ExitGames.Client.Photon.Hashtable; //Replace default Hashtables with Photon hashtables

public class PlayerNetwork : Photon.MonoBehaviour
{

//This is main script that coordinate our player in game, it decides which component to enable/disable
//Also it sync's our data with remote instances over network

public SoldierAnimation soldierAnimation;
public Renderer soldierBody;
public Material teamALook;
public Material teamBLook;
public Material fpsHandMaterial;
public PlayerWeapons playerWeapons;
public GameObject firstPersonView;

public Transform nameLabelTransform;
public GUIText nameLabel;
public GUIText nameLabelShadow;

public AudioSource playerAudio;
public AudioSource walkingAudio;

public AudioClip hitSound;
public AudioClip[] walkingSounds;
public AudioClip[] ladderSounds;

public Collider[] headHitBoxes;
public Collider[] torsoHitBoxes;
public Collider[] limbsHitBoxes;

Vector3 playerPos = Vector3.zero;
[HideInInspector]
public Vector3 aimPos = Vector3.zero;
Vector3 smoothAimPos = Vector3.zero;
float positionSmoother = 17.5f;
float d;

[HideInInspector]
public FPSController fpsController;
FPSMouseLook localMouseLook;
[HideInInspector]
public FPSMouseLook cameraMouseLook;
[HideInInspector]
public Transform thisT;
//[HideInInspector]
//public RoomController rc;
[HideInInspector]
public int playerID;
[HideInInspector]
public bool playerKilled = false;

int currentWeaponIndex = -1;
int previousWeaponIndex = -1;
bool isFiringRemote = false;
int playerTeam;
Camera mainCamera;
Transform mainCameraT;
Vector3 screenPos; //For name label display
float offset;
//Save references incase we kill this player
string lastWeaponName = "";
int lastBodyPart = -1;

//Position Interpolation Sync
double interpolationBackTime = 0.37d; 

internal struct State
    {
internal double timestamp;
internal Vector3 pos;
internal Quaternion rot;
}

//double currentTime;

// We store twenty states with "playback" information
State[] m_BufferedState = new State[20];
// Keep track of what slots are used
int m_TimestampCount;
int movementStateLocal = -1;
int receivedMovementState = -1;
float stepLength; //Used for playing walking sounds

// Use this for initialization
void Start ()
    {
photonView.synchronization = ViewSynchronization.Unreliable;

localMouseLook = GetComponent();
fpsController = GetComponent();
fpsController.pn = this;

playerWeapons.playerNetwork = this;
playerWeapons.soldierAnimation = soldierAnimation;
playerWeapons.fpsController = fpsController;
playerWeapons.QuickSetup(photonView.isMine);

gameObject.name = photonView.owner.name;
thisT = transform;

playerKilled = false;

gameObject.layer = 2; //Set layer to Ignore Raycast

if(!photonView.isMine)
        {
//Deactivate all scripts and object that are not used by remote instance
localMouseLook.enabled = false;
fpsController.enabled = false;
playerWeapons.enabled = false;
firstPersonView.SetActive(false);
if(!soldierAnimation.gameObject.activeSelf)
            {
soldierAnimation.gameObject.SetActive(true);
}
soldierAnimation.playerWeapons = playerWeapons;
soldierAnimation.playerNetwork = this;
soldierAnimation.Setup();

SetupBoxes(headHitBoxes, HitBox.BodyPart.Head);
SetupBoxes(torsoHitBoxes, HitBox.BodyPart.Torso);
SetupBoxes(limbsHitBoxes, HitBox.BodyPart.Limbs);

//Add this player to reference
GameSettings.rc.otherPlayers.Add(this);
}
        else
        {
firstPersonView.SetActive(true);
soldierAnimation.gameObject.SetActive(false);
cameraMouseLook = playerWeapons.playerCamera.GetComponent();
nameLabelTransform.gameObject.SetActive(false);
gameObject.tag = "Player";
}

if(PhotonNetwork.isMasterClient)
        {
//Set player HP
Hashtable setPlayerData = new Hashtable();
setPlayerData.Add("PlayerHP", (int)100);
photonView.owner.SetCustomProperties(setPlayerData);
}

playerTeam = (int)photonView.owner.customProperties["Team"];
playerID = photonView.owner.ID;

if(playerTeam == 1 || playerTeam == 2)
        {
if(playerTeam == 1)
            {
soldierBody.sharedMaterial = teamALook;
}
            else
            {
soldierBody.sharedMaterial = teamBLook;
}

if(photonView.isMine)
            {
fpsHandMaterial.SetTexture("_MainTex", soldierBody.sharedMaterial.GetTexture("_MainTex"));
fpsHandMaterial.color = soldierBody.sharedMaterial.color;
}
            else
            {
nameLabel.text = photonView.name;
nameLabelShadow.text = photonView.name;
nameLabel.color = playerTeam == 1 ? GameSettings.teamAColor : GameSettings.teamBColor;
}
}
}

void SetupBoxes (Collider[] tmpBoxes, HitBox.BodyPart bp)
    {
for(int i = 0; i < tmpBoxes.Length; i++)
        {
tmpBoxes[i].isTrigger = true;
tmpBoxes[i].gameObject.AddComponent().AssignVariables(this, bp);
tmpBoxes[i].tag = "Body";
}
}

//Sync player over network
void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info)
    {
if (stream.isWriting)
        {
//Send data
if(!thisT)
return;

stream.SendNext(thisT.position);
stream.SendNext(playerWeapons.playerCamera.position + playerWeapons.playerCamera.forward * 100);
stream.SendNext(playerWeapons.globalWeaponIndex);
stream.SendNext(playerWeapons.isFiring);
stream.SendNext(fpsController.movementState);
}
        else
        {
//Receive data
playerPos = (Vector3)stream.ReceiveNext();
aimPos = (Vector3)stream.ReceiveNext();
currentWeaponIndex = (int)stream.ReceiveNext();
isFiringRemote = (bool)stream.ReceiveNext();
soldierAnimation.movementState = (int)stream.ReceiveNext();


// Shift buffer contents, oldest data erased, 18 becomes 19, ... , 0 becomes 1
for (int i=m_BufferedState.Length-1;i>=1;i--)
{
m_BufferedState[i] = m_BufferedState[i-1];
}

// Save currect received state as 0 in the buffer, safe to overwrite after shifting
State state = new State();
state.timestamp = info.timestamp;
state.pos = playerPos;
http://state.rot = rot;
m_BufferedState[0] = state;

// Increment state count but never exceed buffer size
m_TimestampCount = Mathf.Min(m_TimestampCount + 1, m_BufferedState.Length);

// Check integrity, lowest numbered state in the buffer is newest and so on
for (int i=0;i {
if (m_BufferedState[i].timestamp < m_BufferedState[i+1].timestamp)
Debug.Log("State inconsistent");
}
}
}

// Update is called once per frame
void Update ()
    {
if(!photonView.isMine)
        {
InterpolatePosition ();

smoothAimPos = Vector3.Lerp(smoothAimPos, aimPos, Time.deltaTime * positionSmoother);

if(aimPos != Vector3.zero)
            {
thisT.LookAt(new Vector3(smoothAimPos.x, thisT.position.y, smoothAimPos.z));
playerWeapons.playerCamera.LookAt(smoothAimPos);
}

if(isFiringRemote)
            {
playerWeapons.FireRemote();
}

if(previousWeaponIndex != currentWeaponIndex)
            {
previousWeaponIndex = currentWeaponIndex;
playerWeapons.globalWeaponIndex = currentWeaponIndex;
playerWeapons.SwitchWeaponRemote();
}

//Show name label for our teammates
if(!playerKilled && ((playerTeam == GameSettings.ourTeam && GameSettings.currentGameMode != "FFA") || GameSettings.ourTeam == 0))
            {
if(!nameLabelTransform.gameObject.activeSelf)
                {
nameLabelTransform.gameObject.SetActive(true);
}

if(!mainCamera || !mainCamera.gameObject.activeInHierarchy)
                {
if(Camera.main)
                    {
mainCamera = Camera.main;
mainCameraT = mainCamera.transform;
}
}
                else
                {
offset = Vector3.Distance(mainCameraT.position, thisT.position)/50;
screenPos = mainCamera.WorldToViewportPoint(new Vector3(thisT.position.x, thisT.position.y + 2.6f + offset, thisT.position.z));

if(screenPos.z > 0)
                    {
nameLabelTransform.position = new Vector3(screenPos.x, screenPos.y);
}
                    else
                    {
nameLabelTransform.position = new Vector3(-350, -350);
}
}

nameLabelTransform.eulerAngles = Vector3.zero;
}
            else
            {
if(nameLabelTransform.gameObject.activeSelf)
                {
nameLabelTransform.gameObject.SetActive(false);
}
}

receivedMovementState = soldierAnimation.movementState;
}
        else
        {
//Send cameraFOV to reduce mouse sensitivity when aiming
http://localMouseLook.cameraFOV = playerWeapons.mainPlayerCamera.fieldOfView;
http://cameraMouseLook.cameraFOV = playerWeapons.mainPlayerCamera.fieldOfView;

receivedMovementState = fpsController.movementState;
}

//Play footstep sound for both local and remote player instances
if(!playerKilled)
        {
if(movementStateLocal != receivedMovementState)
            {
movementStateLocal = receivedMovementState;
PlayWalkingSound();
}
}
        else
        {
if(walkingAudio.isPlaying)
            {
walkingAudio.Stop();
}
}
}

void InterpolatePosition ()
    {
d = Vector3.Distance(thisT.position, m_BufferedState[0].pos);
soldierAnimation.isMoving = d > 0.1f;

double currentTime = PhotonNetwork.time;
double interpolationTime = currentTime - interpolationBackTime;
// We have a window of interpolationBackTime where we basically play 
// By having interpolationBackTime the average ping, you will usually use interpolation.
// And only if no more data arrives we will use extrapolation

// Use interpolation
// Check if latest state exceeds interpolation time, if this is the case then
// it is too old and extrapolation should be used

if (m_BufferedState[0].timestamp > interpolationTime)
        {
for (int i=0;i            {
// Find the state which matches the interpolation time (time+0.1) or use last state
if (m_BufferedState[i].timestamp <= interpolationTime || i == m_TimestampCount-1)
                {
// The state one slot newer (<100ms) than the best playback state
State rhs = m_BufferedState[Mathf.Max(i-1, 0)];
// The best playback state (closest to 100 ms old (default time))
State lhs = m_BufferedState[i];

// Use the time between the two slots to determine if interpolation is necessary
double length = rhs.timestamp - lhs.timestamp;
float t = 0.0F;
// As the time difference gets closer to 100 ms t gets closer to 1 in 
// which case rhs is only used
if (length > 0.0001)
                    {
t = (float)((interpolationTime - lhs.timestamp) / length);
}

// if t=0 => lhs is used directly
thisT.position = Vector3.Lerp(lhs.pos, rhs.pos, t);
http://transform.localRotation = Quaternion.Slerp(lhs.rot, rhs.rot, t);
return;
}
}
}
        else
        {
// Use extrapolation. Here we do something really simple and just repeat the last
// received state. You can do clever stuff with predicting what should happen

State latest = m_BufferedState[0];

thisT.position = latest.pos;
http://transform.localRotation = latest.rot;

//print ("Moving DIrectly to latest pos " + Random.Range(111, 333).ToString());
}
}

//Called from Weapon.cs when player shooting single fire weapons
public void FireSingleRemote()
    {
photonView.RPC("FireRemoteRPC", PhotonTargets.Others);
}

[PunRPC]
void FireRemoteRPC()
    {
playerWeapons.FireRemote();
}

//Reload Sync
public void DoReload ()
    {
photonView.RPC("DoReloadRemote", PhotonTargets.Others);
}

[PunRPC]
void DoReloadRemote()
    {
if(playerWeapons.currentSelectedWeapon)
        {
playerWeapons.currentSelectedWeapon.ReloadNetworkSync();
}
}

//Do player damage, called from HitBox.cs
public void ApplyDamage(int[] values)
    {
if(!playerKilled && (playerTeam != GameSettings.ourTeam || photonView.isMine || GameSettings.currentGameMode == "FFA"))
        {
photonView.RPC("DamageRemote", PhotonTargets.All, values, PhotonNetwork.player.ID);
}
}

[PunRPC]
void DamageRemote (int[] values, int killerID)
    {
if(photonView.isMine)
        {
GameSettings.rc.DoHitDetector((int)values[2]);
fpsController.fallSlowDown = 0.5f;

PlayHitSound();
}
        else
        {
soldierAnimation.DoHitMovement();
}

if(!playerKilled)
        {
if(PhotonNetwork.player.ID == killerID)
            {
//Save temp references
lastWeaponName = GameSettings.rc.ourPlayer ? GameSettings.rc.ourPlayer.playerWeapons.currentSelectedWeapon.weaponName : "";
lastBodyPart = values[1];
}

if(PhotonNetwork.isMasterClient)
            {
int currentHP = photonView.owner.customProperties["PlayerHP"] != null ? (int)photonView.owner.customProperties["PlayerHP"] : 100;
currentHP -= GetDMG((int)values[0], (int)values[1]);
Hashtable setPlayerData = new Hashtable();
setPlayerData.Add("PlayerHP", currentHP); //Setup player HP by master client
photonView.owner.SetCustomProperties(setPlayerData);

if(currentHP < 1)
                {
photonView.RPC("KillPlayer", PhotonTargets.All, killerID);
playerKilled = true;
}
}
}
}

[PunRPC]
void KillPlayer (int killerID)
    {
playerKilled = true;

if(photonView.isMine)
        {
soldierAnimation.gameObject.SetActive(true);
firstPersonView.SetActive(false);

localMouseLook.enabled = false;
http://fpsController.enabled = false;
playerWeapons.enabled = false;
playerWeapons.isFiring = false;

GameSettings.rc.PrepareRespawn(-killerID, false);
}

if(PhotonNetwork.isMasterClient)
        {
//Set killed player deaths
if(photonView.owner != null)
            {
int newDeaths = photonView.owner.customProperties["Deaths"] == null ? 1 : (int)photonView.owner.customProperties["Deaths"] + 1;
Hashtable setPlayerProperties = new Hashtable();
setPlayerProperties.Add("Deaths", newDeaths);
photonView.owner.SetCustomProperties(setPlayerProperties);

//Do not add kills nor team score if we killed ourselves (fell down etc.)
if(photonView.owner.ID != killerID)
                {
//Find killer player instance
PhotonPlayer killerPLayer = null;
PhotonPlayer[] allPlayers = PhotonNetwork.playerList;
for(int i = 0; i < allPlayers.Length; i++)
                    {
if(allPlayers[i].ID == killerID)
                        {
killerPLayer = allPlayers[i];
}
}

if(killerPLayer != null)
                    {
//Add kills for killer
int newKills = killerPLayer.customProperties["Kills"] == null ? 1 : (int)killerPLayer.customProperties["Kills"] + 1;
setPlayerProperties = new Hashtable();
setPlayerProperties.Add("Kills", newKills);
killerPLayer.SetCustomProperties(setPlayerProperties);

//Update team scores
if(GameSettings.currentGameMode == "TDM")
                        {
Hashtable setRoomProperties = new Hashtable();
int currentTeamScore = 0;

if((int)killerPLayer.customProperties["Team"] == 1)
                            {
currentTeamScore = PhotonNetwork.room.customProperties["TeamAScore"] != null ? (int)PhotonNetwork.room.customProperties["TeamAScore"] + 1: 1;
setRoomProperties.Add("TeamAScore", currentTeamScore);
}
if((int)killerPLayer.customProperties["Team"] == 2)
                            {
currentTeamScore = PhotonNetwork.room.customProperties["TeamBScore"] != null ? (int)PhotonNetwork.room.customProperties["TeamBScore"] + 1 : 1;
setRoomProperties.Add("TeamBScore", currentTeamScore);
}

if(setRoomProperties.Count > 0)
                            {
PhotonNetwork.room.SetCustomProperties(setRoomProperties);
}
}
}
}
}
}

if(PhotonNetwork.player.ID == killerID)
        {
//Check what weapon we used right before
string selectedWeaponNameTmp = "[" + lastWeaponName + "]";
string killedPlayerName = photonView.owner.name;
int killedPlayerTeam = (int)photonView.owner.customProperties["Team"];

if(lastBodyPart == -35)
            {
selectedWeaponNameTmp = "fell";
killedPlayerName = "down";
killedPlayerTeam = 0;
}
            else
            {
if(lastBodyPart == 0)
                {
selectedWeaponNameTmp += " -> Headshot";
}
}
//Notify others on kill and add cash
GameSettings.rc.ReportKill(killedPlayerName, selectedWeaponNameTmp, killedPlayerTeam);
GameSettings.rc.AddKillCash(lastBodyPart );
}

soldierAnimation.PlayKillAnimation();
}

int GetDMG (int weaponIndex, int bodyPart)
    {
if(weaponIndex > -1 && weaponIndex < playerWeapons.totalWeapons.Count)
        {
//For shotgun we divide damage for number of fractions
int divideBy = playerWeapons.totalWeapons[weaponIndex].fireType == PlayerWeapons.FireType.Shotgun ? 5 : 1;

if(bodyPart == 0 || bodyPart == 1)
            {
if(bodyPart == 0)
                {
return  playerWeapons.totalWeapons[weaponIndex].headDamage/divideBy;
}
                else
                {
return playerWeapons.totalWeapons[weaponIndex].torsoDamage/divideBy;
}
}
            else
            {
return playerWeapons.totalWeapons[weaponIndex].limbsDamage/divideBy;
}
}
        else
        {
return Mathf.Abs(weaponIndex);
}
}

void PlayHitSound ()
    {
playerAudio.Stop();
if(playerAudio.clip != hitSound)
        {
playerAudio.clip = hitSound;
}
playerAudio.Play();
}

void PlayWalkingSound ()
    {
//print ("Changed walking state");

CancelInvoke("PlayWalkingSoundInvoke");

stepLength = 0;

if(movementStateLocal == 0 || movementStateLocal == 1 || movementStateLocal == 2 || movementStateLocal == 4)
        {
if(movementStateLocal == 4)
            {
//On ladder
stepLength = 2.5f/fpsController.ladderSpeed;
}
            else
            {
if(movementStateLocal == 2)
                {
//Crouching
stepLength = 3.5f/fpsController.crouchSpeed;
}
                else
                {
if(movementStateLocal == 0)
                    {
stepLength = 3.5f/fpsController.walkSpeed;
}
                    else
                    {
stepLength = 3.5f/fpsController.runSpeed;
}
}
}
}

if(stepLength > 0)
        {
InvokeRepeating("PlayWalkingSoundInvoke", 0.09f, stepLength);
}
}

void PlayWalkingSoundInvoke ()
    {
walkingAudio.Stop();

if(fpsController.isMoving || soldierAnimation.isMoving)
        {
if(movementStateLocal == 4)
            {
//On ladder
walkingAudio.clip = ladderSounds[Random.Range(0, ladderSounds.Length - 1)];
}
            else
            {
//Walkig
walkingAudio.clip = walkingSounds[Random.Range(0, walkingSounds.Length - 1)];
}

walkingAudio.Play();
}
}
}
avatar
Sheyk
Avançado
Avançado

PONTOS : 706
REPUTAÇÃO : 23
Idade : 18
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: (Jogo De FPS) Código para tirar HP ao entrar em lugares não permitidos

Mensagem por Sheyk em Sab Jul 02, 2016 10:27 am

um pouco grande não ? hahahahaha Very Happy Very Happy Very Happy Very Happy Very Happy
avatar
Sheyk
Avançado
Avançado

PONTOS : 706
REPUTAÇÃO : 23
Idade : 18
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: (Jogo De FPS) Código para tirar HP ao entrar em lugares não permitidos

Mensagem por John Rambo em Sab Jul 02, 2016 10:32 am

É sim kkk mas peço que dá próxima vez use a caixa de códigos que o fórum oferece
avatar
John Rambo
Moderador

Masculino PONTOS : 2016
REPUTAÇÃO : 407
Idade : 18
Áreas de atuação :
Unity;
Programação;
Modelagem;
Criação de cenários;
Sonorização;

Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: (Jogo De FPS) Código para tirar HP ao entrar em lugares não permitidos

Mensagem por Sheyk em Sab Jul 02, 2016 10:46 am

OK, desculpe-me!!! 
é porque sou novato por aqui e não sei quase nada...
mais irei dar meu máximo para seguir as regras!!!
avatar
Sheyk
Avançado
Avançado

PONTOS : 706
REPUTAÇÃO : 23
Idade : 18
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: (Jogo De FPS) Código para tirar HP ao entrar em lugares não permitidos

Mensagem por John Rambo em Sab Jul 02, 2016 10:50 am

Sem problemas,  não infringiste regra alguma, entenda mais por aqui: http://www.schultzgames.com/t1292-___como-utilizar-o-forum___-principais-botoes-e-suas-funcoes

Quanto ao script está quase pronto
avatar
John Rambo
Moderador

Masculino PONTOS : 2016
REPUTAÇÃO : 407
Idade : 18
Áreas de atuação :
Unity;
Programação;
Modelagem;
Criação de cenários;
Sonorização;

Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: (Jogo De FPS) Código para tirar HP ao entrar em lugares não permitidos

Mensagem por John Rambo em Sab Jul 02, 2016 11:08 am

mas antes eu preciso que voce corrija os varios erros que existem neste script. tem varios lugares que faltam ;     }     )
avatar
John Rambo
Moderador

Masculino PONTOS : 2016
REPUTAÇÃO : 407
Idade : 18
Áreas de atuação :
Unity;
Programação;
Modelagem;
Criação de cenários;
Sonorização;

Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: (Jogo De FPS) Código para tirar HP ao entrar em lugares não permitidos

Mensagem por Sheyk em Sab Jul 02, 2016 11:19 am

Ok
avatar
Sheyk
Avançado
Avançado

PONTOS : 706
REPUTAÇÃO : 23
Idade : 18
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: (Jogo De FPS) Código para tirar HP ao entrar em lugares não permitidos

Mensagem por Sheyk em Sab Jul 02, 2016 4:22 pm

Very Happy
avatar
Sheyk
Avançado
Avançado

PONTOS : 706
REPUTAÇÃO : 23
Idade : 18
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: (Jogo De FPS) Código para tirar HP ao entrar em lugares não permitidos

Mensagem por John Rambo em Sab Jul 02, 2016 10:41 pm

Pronto? Repasse o script usando a caixinha de códigos pra ele não perder componentes
avatar
John Rambo
Moderador

Masculino PONTOS : 2016
REPUTAÇÃO : 407
Idade : 18
Áreas de atuação :
Unity;
Programação;
Modelagem;
Criação de cenários;
Sonorização;

Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: (Jogo De FPS) Código para tirar HP ao entrar em lugares não permitidos

Mensagem por Sheyk em Dom Jul 03, 2016 1:21 am

Código:
//New FPS
//Staff @2016

using UnityEngine;
using System.Collections;
using Hashtable = ExitGames.Client.Photon.Hashtable; //Replace default Hashtables with Photon hashtables

public class PlayerNetwork : Photon.MonoBehaviour
{

   //This is main script that coordinate our player in game, it decides which component to enable/disable
   //Also it sync's our data with remote instances over network

   public SoldierAnimation soldierAnimation;
   public Renderer soldierBody;
   public Material teamALook;
   public Material teamBLook;
   public Material fpsHandMaterial;
   public PlayerWeapons playerWeapons;
   public GameObject firstPersonView;

   public Transform nameLabelTransform;
   public GUIText nameLabel;
   public GUIText nameLabelShadow;

   public AudioSource playerAudio;
   public AudioSource walkingAudio;

   public AudioClip hitSound;
   public AudioClip[] walkingSounds;
   public AudioClip[] ladderSounds;

   public Collider[] headHitBoxes;
   public Collider[] torsoHitBoxes;
   public Collider[] limbsHitBoxes;

   Vector3 playerPos = Vector3.zero;
   [HideInInspector]
   public Vector3 aimPos = Vector3.zero;
   Vector3 smoothAimPos = Vector3.zero;
   float positionSmoother = 17.5f;
   float d;

   [HideInInspector]
   public FPSController fpsController;
   FPSMouseLook localMouseLook;
   [HideInInspector]
   public FPSMouseLook cameraMouseLook;
   [HideInInspector]
   public Transform thisT;
   //[HideInInspector]
   //public RoomController rc;
   [HideInInspector]
   public int playerID;
   [HideInInspector]
   public bool playerKilled = false;
   
   int currentWeaponIndex = -1;
   int previousWeaponIndex = -1;
   bool isFiringRemote = false;
   int playerTeam;
   Camera mainCamera;
   Transform mainCameraT;
   Vector3 screenPos; //For name label display
   float offset;
   //Save references incase we kill this player
   string lastWeaponName = "";
   int lastBodyPart = -1;
   
   //Position Interpolation Sync
   double interpolationBackTime = 0.37d;
   
   internal struct State
    {
      internal double timestamp;
      internal Vector3 pos;
      internal Quaternion rot;
   }

   //double currentTime;
   
   // We store twenty states with "playback" information
   State[] m_BufferedState = new State[20];
   // Keep track of what slots are used
   int m_TimestampCount;
   int movementStateLocal = -1;
   int receivedMovementState = -1;
   float stepLength; //Used for playing walking sounds
   
   // Use this for initialization
   void Start ()
    {
      photonView.synchronization = ViewSynchronization.Unreliable;

      localMouseLook = GetComponent<FPSMouseLook>();
      fpsController = GetComponent<FPSController>();
      fpsController.pn = this;

      playerWeapons.playerNetwork = this;
      playerWeapons.soldierAnimation = soldierAnimation;
      playerWeapons.fpsController = fpsController;
      playerWeapons.QuickSetup(photonView.isMine);

      gameObject.name = photonView.owner.name;
      thisT = transform;

      playerKilled = false;

      gameObject.layer = 2; //Set layer to Ignore Raycast

      if(!photonView.isMine)
        {
         //Deactivate all scripts and object that are not used by remote instance
         localMouseLook.enabled = false;
         fpsController.enabled = false;
         playerWeapons.enabled = false;
         firstPersonView.SetActive(false);
         if(!soldierAnimation.gameObject.activeSelf)
            {
            soldierAnimation.gameObject.SetActive(true);
         }
         soldierAnimation.playerWeapons = playerWeapons;
         soldierAnimation.playerNetwork = this;
         soldierAnimation.Setup();

         SetupBoxes(headHitBoxes, HitBox.BodyPart.Head);
         SetupBoxes(torsoHitBoxes, HitBox.BodyPart.Torso);
         SetupBoxes(limbsHitBoxes, HitBox.BodyPart.Limbs);

         //Add this player to reference
         GameSettings.rc.otherPlayers.Add(this);
      }
        else
        {
         firstPersonView.SetActive(true);
         soldierAnimation.gameObject.SetActive(false);
         cameraMouseLook = playerWeapons.playerCamera.GetComponent<FPSMouseLook>();
         nameLabelTransform.gameObject.SetActive(false);
         gameObject.tag = "Player";
      }

      if(PhotonNetwork.isMasterClient)
        {
         //Set player HP
         Hashtable setPlayerData = new Hashtable();
         setPlayerData.Add("PlayerHP", (int)100);
         photonView.owner.SetCustomProperties(setPlayerData);
      }

      playerTeam = (int)photonView.owner.customProperties["Team"];
      playerID = photonView.owner.ID;

      if(playerTeam == 1 || playerTeam == 2)
        {
         if(playerTeam == 1)
            {
            soldierBody.sharedMaterial = teamALook;
         }
            else
            {
            soldierBody.sharedMaterial = teamBLook;
         }

         if(photonView.isMine)
            {
            fpsHandMaterial.SetTexture("_MainTex", soldierBody.sharedMaterial.GetTexture("_MainTex"));
            fpsHandMaterial.color = soldierBody.sharedMaterial.color;
         }
            else
            {
            nameLabel.text = photonView.name;
            nameLabelShadow.text = photonView.name;
            nameLabel.color = playerTeam == 1 ? GameSettings.teamAColor : GameSettings.teamBColor;
         }
      }
   }

   void SetupBoxes (Collider[] tmpBoxes, HitBox.BodyPart bp)
    {
      for(int i = 0; i < tmpBoxes.Length; i++)
        {
         tmpBoxes[i].isTrigger = true;
         tmpBoxes[i].gameObject.AddComponent<HitBox>().AssignVariables(this, bp);
         tmpBoxes[i].tag = "Body";
      }
   }

   //Sync player over network
   void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info)
    {
      if (stream.isWriting)
        {
         //Send data
         if(!thisT)
            return;

         stream.SendNext(thisT.position);
         stream.SendNext(playerWeapons.playerCamera.position + playerWeapons.playerCamera.forward * 100);
         stream.SendNext(playerWeapons.globalWeaponIndex);
         stream.SendNext(playerWeapons.isFiring);
         stream.SendNext(fpsController.movementState);
      }
        else
        {
         //Receive data
         playerPos = (Vector3)stream.ReceiveNext();
         aimPos = (Vector3)stream.ReceiveNext();
         currentWeaponIndex = (int)stream.ReceiveNext();
         isFiringRemote = (bool)stream.ReceiveNext();
         soldierAnimation.movementState = (int)stream.ReceiveNext();


         // Shift buffer contents, oldest data erased, 18 becomes 19, ... , 0 becomes 1
         for (int i=m_BufferedState.Length-1;i>=1;i--)
         {
            m_BufferedState[i] = m_BufferedState[i-1];
         }
         
         // Save currect received state as 0 in the buffer, safe to overwrite after shifting
         State state = new State();
         state.timestamp = info.timestamp;
         state.pos = playerPos;
         //state.rot = rot;
         m_BufferedState[0] = state;
         
         // Increment state count but never exceed buffer size
         m_TimestampCount = Mathf.Min(m_TimestampCount + 1, m_BufferedState.Length);
         
         // Check integrity, lowest numbered state in the buffer is newest and so on
         for (int i=0;i<m_TimestampCount-1;i++)
         {
            if (m_BufferedState[i].timestamp < m_BufferedState[i+1].timestamp)
               Debug.Log("State inconsistent");
         }
      }
   }
   
   // Update is called once per frame
   void Update ()
    {
      if(!photonView.isMine)
        {
         InterpolatePosition ();

         smoothAimPos = Vector3.Lerp(smoothAimPos, aimPos, Time.deltaTime * positionSmoother);

         if(aimPos != Vector3.zero)
            {
            thisT.LookAt(new Vector3(smoothAimPos.x, thisT.position.y, smoothAimPos.z));
            playerWeapons.playerCamera.LookAt(smoothAimPos);
         }

         if(isFiringRemote)
            {
            playerWeapons.FireRemote();
         }

         if(previousWeaponIndex != currentWeaponIndex)
            {
            previousWeaponIndex = currentWeaponIndex;
            playerWeapons.globalWeaponIndex = currentWeaponIndex;
            playerWeapons.SwitchWeaponRemote();
         }

         //Show name label for our teammates
         if(!playerKilled && ((playerTeam == GameSettings.ourTeam && GameSettings.currentGameMode != "FFA") || GameSettings.ourTeam == 0))
            {
            if(!nameLabelTransform.gameObject.activeSelf)
                {
               nameLabelTransform.gameObject.SetActive(true);
            }
            
            if(!mainCamera || !mainCamera.gameObject.activeInHierarchy)
                {
               if(Camera.main)
                    {
                  mainCamera = Camera.main;
                  mainCameraT = mainCamera.transform;
               }
            }
                else
                {
               offset = Vector3.Distance(mainCameraT.position, thisT.position)/50;
               screenPos = mainCamera.WorldToViewportPoint(new Vector3(thisT.position.x, thisT.position.y + 2.6f + offset, thisT.position.z));

               if(screenPos.z > 0)
                    {
                  nameLabelTransform.position = new Vector3(screenPos.x, screenPos.y);
               }
                    else
                    {
                  nameLabelTransform.position = new Vector3(-350, -350);
               }
            }

            nameLabelTransform.eulerAngles = Vector3.zero;
         }
            else
            {
            if(nameLabelTransform.gameObject.activeSelf)
                {
               nameLabelTransform.gameObject.SetActive(false);
            }
         }

         receivedMovementState = soldierAnimation.movementState;
      }
        else
        {
         //Send cameraFOV to reduce mouse sensitivity when aiming
         //localMouseLook.cameraFOV = playerWeapons.mainPlayerCamera.fieldOfView;
         //cameraMouseLook.cameraFOV = playerWeapons.mainPlayerCamera.fieldOfView;

         receivedMovementState = fpsController.movementState;
      }

      //Play footstep sound for both local and remote player instances
      if(!playerKilled)
        {
         if(movementStateLocal != receivedMovementState)
            {
            movementStateLocal = receivedMovementState;
            PlayWalkingSound();
         }
      }
        else
        {
         if(walkingAudio.isPlaying)
            {
            walkingAudio.Stop();
         }
      }
   }
   
   void InterpolatePosition ()
    {
      d = Vector3.Distance(thisT.position, m_BufferedState[0].pos);
      soldierAnimation.isMoving = d > 0.1f;

      double currentTime = PhotonNetwork.time;
      double interpolationTime = currentTime - interpolationBackTime;
      // We have a window of interpolationBackTime where we basically play
      // By having interpolationBackTime the average ping, you will usually use interpolation.
      // And only if no more data arrives we will use extrapolation
      
      // Use interpolation
      // Check if latest state exceeds interpolation time, if this is the case then
      // it is too old and extrapolation should be used
      
      if (m_BufferedState[0].timestamp > interpolationTime)
        {
         for (int i=0;i<m_TimestampCount;i++)
            {
            // Find the state which matches the interpolation time (time+0.1) or use last state
            if (m_BufferedState[i].timestamp <= interpolationTime || i == m_TimestampCount-1)
                {
               // The state one slot newer (<100ms) than the best playback state
               State rhs = m_BufferedState[Mathf.Max(i-1, 0)];
               // The best playback state (closest to 100 ms old (default time))
               State lhs = m_BufferedState[i];
               
               // Use the time between the two slots to determine if interpolation is necessary
               double length = rhs.timestamp - lhs.timestamp;
               float t = 0.0F;
               // As the time difference gets closer to 100 ms t gets closer to 1 in
               // which case rhs is only used
               if (length > 0.0001)
                    {
                  t = (float)((interpolationTime - lhs.timestamp) / length);
               }
               
               // if t=0 => lhs is used directly
               thisT.position = Vector3.Lerp(lhs.pos, rhs.pos, t);
               //transform.localRotation = Quaternion.Slerp(lhs.rot, rhs.rot, t);
               return;
            }
         }
      }
        else
        {
         // Use extrapolation. Here we do something really simple and just repeat the last
         // received state. You can do clever stuff with predicting what should happen

         State latest = m_BufferedState[0];
         
         thisT.position = latest.pos;
         //transform.localRotation = latest.rot;
         
         //print ("Moving DIrectly to latest pos " + Random.Range(111, 333).ToString());
      }
   }

   //Called from Weapon.cs when player shooting single fire weapons
   public void FireSingleRemote()
    {
      photonView.RPC("FireRemoteRPC", PhotonTargets.Others);
   }

   [PunRPC]
   void FireRemoteRPC()
    {
      playerWeapons.FireRemote();
   }

   //Reload Sync
   public void DoReload ()
    {
      photonView.RPC("DoReloadRemote", PhotonTargets.Others);
   }

   [PunRPC]
   void DoReloadRemote()
    {
      if(playerWeapons.currentSelectedWeapon)
        {
         playerWeapons.currentSelectedWeapon.ReloadNetworkSync();
      }
   }

   //Do player damage, called from HitBox.cs
   public void ApplyDamage(int[] values)
    {
      if(!playerKilled && (playerTeam != GameSettings.ourTeam || photonView.isMine || GameSettings.currentGameMode == "FFA"))
        {
         photonView.RPC("DamageRemote", PhotonTargets.All, values, PhotonNetwork.player.ID);
      }
   }

   [PunRPC]
   void DamageRemote (int[] values, int killerID)
    {
      if(photonView.isMine)
        {
         GameSettings.rc.DoHitDetector((int)values[2]);
         fpsController.fallSlowDown = 0.5f;

         PlayHitSound();
      }
        else
        {
         soldierAnimation.DoHitMovement();
      }

      if(!playerKilled)
        {
         if(PhotonNetwork.player.ID == killerID)
            {
            //Save temp references
            lastWeaponName = GameSettings.rc.ourPlayer ? GameSettings.rc.ourPlayer.playerWeapons.currentSelectedWeapon.weaponName : "";
            lastBodyPart = values[1];
         }

         if(PhotonNetwork.isMasterClient)
            {
            int currentHP = photonView.owner.customProperties["PlayerHP"] != null ? (int)photonView.owner.customProperties["PlayerHP"] : 100;
            currentHP -= GetDMG((int)values[0], (int)values[1]);
            Hashtable setPlayerData = new Hashtable();
            setPlayerData.Add("PlayerHP", currentHP); //Setup player HP by master client
            photonView.owner.SetCustomProperties(setPlayerData);

            if(currentHP < 1)
                {
               photonView.RPC("KillPlayer", PhotonTargets.All, killerID);
               playerKilled = true;
            }
         }
      }
   }

   [PunRPC]
   void KillPlayer (int killerID)
    {
      playerKilled = true;

      if(photonView.isMine)
        {
         soldierAnimation.gameObject.SetActive(true);
         firstPersonView.SetActive(false);

         localMouseLook.enabled = false;
         //fpsController.enabled = false;
         playerWeapons.enabled = false;
         playerWeapons.isFiring = false;

         GameSettings.rc.PrepareRespawn(-killerID, false);
      }

      if(PhotonNetwork.isMasterClient)
        {
         //Set killed player deaths
         if(photonView.owner != null)
            {
            int newDeaths = photonView.owner.customProperties["Deaths"] == null ? 1 : (int)photonView.owner.customProperties["Deaths"] + 1;
            Hashtable setPlayerProperties = new Hashtable();
            setPlayerProperties.Add("Deaths", newDeaths);
            photonView.owner.SetCustomProperties(setPlayerProperties);

            //Do not add kills nor team score if we killed ourselves (fell down etc.)
            if(photonView.owner.ID != killerID)
                {
               //Find killer player instance
               PhotonPlayer killerPLayer = null;
               PhotonPlayer[] allPlayers = PhotonNetwork.playerList;
               for(int i = 0; i < allPlayers.Length; i++)
                    {
                  if(allPlayers[i].ID == killerID)
                        {
                     killerPLayer = allPlayers[i];
                  }
               }

               if(killerPLayer != null)
                    {
                  //Add kills for killer
                  int newKills = killerPLayer.customProperties["Kills"] == null ? 1 : (int)killerPLayer.customProperties["Kills"] + 1;
                  setPlayerProperties = new Hashtable();
                  setPlayerProperties.Add("Kills", newKills);
                  killerPLayer.SetCustomProperties(setPlayerProperties);

                  //Update team scores
                  if(GameSettings.currentGameMode == "TDM")
                        {
                     Hashtable setRoomProperties = new Hashtable();
                     int currentTeamScore = 0;

                     if((int)killerPLayer.customProperties["Team"] == 1)
                            {
                        currentTeamScore = PhotonNetwork.room.customProperties["TeamAScore"] != null ? (int)PhotonNetwork.room.customProperties["TeamAScore"] + 1: 1;
                        setRoomProperties.Add("TeamAScore", currentTeamScore);
                     }
                     if((int)killerPLayer.customProperties["Team"] == 2)
                            {
                        currentTeamScore = PhotonNetwork.room.customProperties["TeamBScore"] != null ? (int)PhotonNetwork.room.customProperties["TeamBScore"] + 1 : 1;
                        setRoomProperties.Add("TeamBScore", currentTeamScore);
                     }

                     if(setRoomProperties.Count > 0)
                            {
                        PhotonNetwork.room.SetCustomProperties(setRoomProperties);
                     }
                  }
               }
            }
         }
      }

      if(PhotonNetwork.player.ID == killerID)
        {
         //Check what weapon we used right before
         string selectedWeaponNameTmp = "[" + lastWeaponName + "]";
         string killedPlayerName = photonView.owner.name;
         int killedPlayerTeam = (int)photonView.owner.customProperties["Team"];

         if(lastBodyPart == -35)
            {
            selectedWeaponNameTmp = "fell";
            killedPlayerName = "down";
            killedPlayerTeam = 0;
         }
            else
            {
            if(lastBodyPart == 0)
                {
               selectedWeaponNameTmp += " -> Headshot";
            }
         }
         //Notify others on kill and add cash
         GameSettings.rc.ReportKill(killedPlayerName, selectedWeaponNameTmp, killedPlayerTeam);
         GameSettings.rc.AddKillCash(lastBodyPart );
      }

      soldierAnimation.PlayKillAnimation();
   }

   int GetDMG (int weaponIndex, int bodyPart)
    {
      if(weaponIndex > -1 && weaponIndex < playerWeapons.totalWeapons.Count)
        {
         //For shotgun we divide damage for number of fractions
         int divideBy = playerWeapons.totalWeapons[weaponIndex].fireType == PlayerWeapons.FireType.Shotgun ? 5 : 1;

         if(bodyPart == 0 || bodyPart == 1)
            {
            if(bodyPart == 0)
                {
               return  playerWeapons.totalWeapons[weaponIndex].headDamage/divideBy;
            }
                else
                {
               return playerWeapons.totalWeapons[weaponIndex].torsoDamage/divideBy;
            }
         }
            else
            {
            return playerWeapons.totalWeapons[weaponIndex].limbsDamage/divideBy;
         }
      }
        else
        {
         return Mathf.Abs(weaponIndex);
      }
   }

   void PlayHitSound ()
    {
      playerAudio.Stop();
      if(playerAudio.clip != hitSound)
        {
         playerAudio.clip = hitSound;
      }
      playerAudio.Play();
   }

   void PlayWalkingSound ()
    {
      //print ("Changed walking state");

      CancelInvoke("PlayWalkingSoundInvoke");

      stepLength = 0;

      if(movementStateLocal == 0 || movementStateLocal == 1 || movementStateLocal == 2 || movementStateLocal == 4)
        {
         if(movementStateLocal == 4)
            {
            //On ladder
            stepLength = 2.5f/fpsController.ladderSpeed;
         }
            else
            {
            if(movementStateLocal == 2)
                {
               //Crouching
               stepLength = 3.5f/fpsController.crouchSpeed;
            }
                else
                {
               if(movementStateLocal == 0)
                    {
                  stepLength = 3.5f/fpsController.walkSpeed;
               }
                    else
                    {
                  stepLength = 3.5f/fpsController.runSpeed;
               }
            }
         }
      }

      if(stepLength > 0)
        {
         InvokeRepeating("PlayWalkingSoundInvoke", 0.09f, stepLength);
      }
   }

   void PlayWalkingSoundInvoke ()
    {
      walkingAudio.Stop();

      if(fpsController.isMoving || soldierAnimation.isMoving)
        {
         if(movementStateLocal == 4)
            {
            //On ladder
            walkingAudio.clip = ladderSounds[Random.Range(0, ladderSounds.Length - 1)];
         }
            else
            {
            //Walkig
            walkingAudio.clip = walkingSounds[Random.Range(0, walkingSounds.Length - 1)];
         }

         walkingAudio.Play();
      }
   }
}
avatar
Sheyk
Avançado
Avançado

PONTOS : 706
REPUTAÇÃO : 23
Idade : 18
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: (Jogo De FPS) Código para tirar HP ao entrar em lugares não permitidos

Mensagem por Sheyk em Dom Jul 03, 2016 1:21 am

agora ta certo ?
avatar
Sheyk
Avançado
Avançado

PONTOS : 706
REPUTAÇÃO : 23
Idade : 18
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: (Jogo De FPS) Código para tirar HP ao entrar em lugares não permitidos

Mensagem por MarcosSchultz em Dom Jul 03, 2016 7:42 pm

Pegou este script pronto de algum lugar?

Estão faltando um monte de scripts adicionais para que possamos ajudar... seria melhor zipar o projeto e enviar para que possamos ver. Ou terá que enviar os scripts que faltam como:

SoldierAnimation, PlayerWeapons, FPSController, FPSMouseLook, Photon, e toda a parte do Photon e suas bibliotecas.

O HP neste script que você passou não é presente nele... apenas é feita uma indicão, mas o HP real está em outro script. É uma propriedade chamada ""PlayerHP""

O que você pode fazer neste script é deixar esta variável verdadeira: "playerKilled"...
avatar
MarcosSchultz
Administrador

Masculino PONTOS : 9668
REPUTAÇÃO : 1664
Idade : 21
Áreas de atuação : Administrador do fórum
Respeito as regras :

Ver perfil do usuário http://www.schultzgames.com

Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum