forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Unity (http://forum.boolean.name/forumdisplay.php?f=144)
-   -   Стрельба мультиплеер (http://forum.boolean.name/showthread.php?t=19941)

kisaroff 12.08.2015 19:12

Стрельба мультиплеер
 
PHP код:

public Transform bullet;
public 
GameObject BulletSpawn;

NetworkViewID PlayerID;

void Start() {
        
PlayerID transform.networkView.viewID;
    
transform.name "Player" PlayerID;
}

void Update () {
    if(
PlayerID.isMine){
    if(
Input.GetKeyDown(KeyCode.Space)){
        
networkView.RPC("PositionBullet"RPCMode.AllPlayerID);
    } 
    }
// ---- void Update() ----

    
[RPC]
void PositionBullet(NetworkViewID viewID){
       
Transform BulletInst = (Transform)Instantiate(bulletBulletSpawn.transform.position Quaternion.identity); // Создаем снаряд
    
BulletInst.rigidbody.AddForce(transform.forward powerBullet * -1);


Скажите дорогие форумчане, что не верно в куске кода.....хочу сделать чтобы и клиенты и сервер видели как другие игроки ведут огонь.
У меня получается, что на стороне сервера или клиента создаются лишние Bullet, не могу понять почему.

kisaroff 12.08.2015 19:45

Ответ: Стрельба мультиплеер
 
Можно удалить тему, решил вопрос...оказывается нужно было
Transform BulletInst = (Transform)Network.Instantiate(bullet, BulletSpawn.transform.position , Quaternion.identity); // Создаем снаряд

kisaroff 15.08.2015 18:38

Ответ: Стрельба мультиплеер
 
Ребят помогите пожалуйста, кто может, знает)
Игра мультиплеерная.

Health.cs
PHP код:

using UnityEngine;
using System.Collections;

public class 
Health MonoBehaviour {

    public 
float hitPoints 100f;


Этот скрипт висит на каждом Игроке.

На Пуле висит скрипт BulletManager.cs
PHP код:

using UnityEngine;
using System.Collections;

public class 
BulletManager MonoBehaviour {
    
void OnCollisionEnter(Collision collision){ 
        if(
collision.collider.gameObject.tag == "Untagged"){
            if(
networkView.isMine){ 
                
Network.Instantiate(Explosions_1transform.positionQuaternion.identity0); 
            }
        }
        if(
collision.collider.gameObject.tag == "Player"){
            if(
networkView.isMine){ 
                
Network.Instantiate(Explosions_2transform.positionQuaternion.identity0);
                
networkView.RPC ("SetDamage"RPCMode.Others);
            }
        }
        
Network.Destroy(gameObject);

    }


Мысль такая, чтобы с каждого игрока при столкновении с Пулей брать компонент Health и вычитать из hitPoints Damage

Помогите кодом)

EvilOkta 17.08.2015 13:55

Ответ: Стрельба мультиплеер
 
тебе поможет ЭТА статья, от одного из знатоков Unity - РАХа
мне очень помогло разобраться

kisaroff 17.08.2015 16:04

Ответ: Стрельба мультиплеер
 
PHP код:

using UnityEngine;
using System.Collections;

public class 
BulletManager MonoBehaviour {

    public 
Transform Explosions_1// Взрыв_1
    
public Transform Explosions_2// Взрыв_2

    
private NetworkViewID BulletID;
    
void Start() {
    
BulletID gameObject.networkView.viewID;
}

void OnCollisionEnter(Collision collision){  // Если снаряд сталкивается с коллайдером
        //foreach(ContactPoint contact in collision.contacts){ }
        
if(collision.gameObject.tag == "Untagged"){
            if(
BulletID.isMine){ 
                
Network.Instantiate(Explosions_1transform.positionQuaternion.identity0); 
            }
        }
        if(
collision.gameObject.tag == "Player"){
            if(
BulletID.isMine){ 
                
Network.Instantiate(Explosions_2transform.positionQuaternion.identity0);
                    
NetworkViewID TargetPlayer collision.gameObject.networkView.viewID;
                    
networkView.RPC("SetDamageBullet_1"RPCMode.OthersTargetPlayer);
            }
        }
        if(
BulletID.isMine){ Network.Destroy(gameObject); }
    }

[
RPC]
void SetDamageBullet_1(NetworkViewID PlayerTarget) {
    
Health Target NetworkView.Find(PlayerTarget).GetComponent<Health>();
    
Target.hitPoints -= PlayerShooting.damage_Tank_1;
}
// --- END --- 

Я за выходные сам разобрался....короч будет так.


стрельба мультиплеер


Часовой пояс GMT +4, время: 22:21.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot