Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Unity

Unity Мультиплатформенный инструмент для разработки игр

Ответ
 
Опции темы
Старый 12.08.2015, 19:12   #1
kisaroff
Оператор ЭВМ
 
Аватар для kisaroff
 
Регистрация: 15.01.2015
Сообщений: 46
Написано 10 полезных сообщений
(для 24 пользователей)
Стрельба мультиплеер

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, не могу понять почему.
__________________
Путь осилит идущий.
(Offline)
 
Ответить с цитированием
Старый 12.08.2015, 19:45   #2
kisaroff
Оператор ЭВМ
 
Аватар для kisaroff
 
Регистрация: 15.01.2015
Сообщений: 46
Написано 10 полезных сообщений
(для 24 пользователей)
Ответ: Стрельба мультиплеер

Можно удалить тему, решил вопрос...оказывается нужно было
Transform BulletInst = (Transform)Network.Instantiate(bullet, BulletSpawn.transform.position , Quaternion.identity); // Создаем снаряд
__________________
Путь осилит идущий.
(Offline)
 
Ответить с цитированием
Старый 15.08.2015, 18:38   #3
kisaroff
Оператор ЭВМ
 
Аватар для kisaroff
 
Регистрация: 15.01.2015
Сообщений: 46
Написано 10 полезных сообщений
(для 24 пользователей)
Ответ: Стрельба мультиплеер

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

Health.cs
using UnityEngine;
using System.Collections;

public class 
Health MonoBehaviour {

    public 
float hitPoints 100f;

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

На Пуле висит скрипт BulletManager.cs
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

Помогите кодом)
__________________
Путь осилит идущий.
(Offline)
 
Ответить с цитированием
Старый 17.08.2015, 13:55   #4
EvilOkta
Знающий
 
Аватар для EvilOkta
 
Регистрация: 31.07.2008
Сообщений: 321
Написано 108 полезных сообщений
(для 229 пользователей)
Ответ: Стрельба мультиплеер

тебе поможет ЭТА статья, от одного из знатоков Unity - РАХа
мне очень помогло разобраться
__________________
Области Хаоса - мой новый Youtube проект
(Offline)
 
Ответить с цитированием
Старый 17.08.2015, 16:04   #5
kisaroff
Оператор ЭВМ
 
Аватар для kisaroff
 
Регистрация: 15.01.2015
Сообщений: 46
Написано 10 полезных сообщений
(для 24 пользователей)
Ответ: Стрельба мультиплеер

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 --- 
Я за выходные сам разобрался....короч будет так.


стрельба мультиплеер
__________________
Путь осилит идущий.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com