Страница 1 из 1

Мультиплеерная камера

СообщениеДобавлено: 29 ноя 2017, 16:36
Hoper098
Делаю танчики в 2D, и не могу разобраться с камерой. Вроде смог сделать для каждого игрока свою камеру, но появляются проблемы. У хоста с танком все нормально, но когда подключается 2 игрок, он не может двигаться и понемногу катится вниз, также появляется проблема с наводкой башни танка (наводится на мышь), наводится непонятно куда. Помогите, а то уже который день мучаюсь.
Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
public class TankControl : NetworkBehaviour
{

    [SerializeField]
    private float Speed_of_Tank=25f;
    [SerializeField]
    private float turn=7f;
    private Rigidbody2D telo;
    [SerializeField]
    private Transform gun;
    [SerializeField]
    private float Speed_of_Gun_Turn = 5f;



    [SerializeField]
    float cameradistance = 34.0f;
    [SerializeField]
    float cameraHeight = 20.0f;
    Transform mainCamera;
    Vector3 cameraOffset;
    Quaternion Turngun()
    {
        Vector3 mouse = Input.mousePosition;
        mouse.z = UnityEngine.Camera.main.transform.position.z;
        Vector3 direction = UnityEngine.Camera.main.ScreenToWorldPoint(mouse) - transform.position;
        float angle = Mathf.Atan2(direction.y, direction.x) * Mathf.Rad2Deg;
        return Quaternion.AngleAxis(angle, Vector3.forward);
    }
    private void Start()
    {
    if (!isLocalPlayer)
        {
            Destroy(this);
            return;
        }
        telo = GetComponent<Rigidbody2D>();
        cameraOffset = new Vector3(0f, 0f, -cameradistance);
        mainCamera = UnityEngine.Camera.main.transform;
        MoveCamera();

    }
    void MoveCamera()
    {
        mainCamera.position = transform.position;
        mainCamera.Translate(cameraOffset);
        mainCamera.LookAt(transform);
    }
    private void FixedUpdate()
    {
        gun.rotation = Quaternion.Lerp(gun.rotation, Turngun(), Speed_of_Gun_Turn * Time.deltaTime);
        telo.gravityScale = 0;
        float xMov = Input.GetAxisRaw("Vertical");
        float yMov = Input.GetAxisRaw("Horizontal");
        telo.AddForce(transform.right * Speed_of_Tank * xMov, ForceMode2D.Impulse);
        telo.AddTorque(turn * yMov * -Mathf.Sign(xMov), ForceMode2D.Impulse);
        MoveCamera();
    }

Re: Мультиплеерная камера

СообщениеДобавлено: 23 янв 2018, 17:03
Filosov
Не очень понятно чем осуществляется синхронизация. Я не претендую на специалиста, но я не вижу ни Command ни SyncVar. Почему управление камерой в Fixed?

Re: Мультиплеерная камера

СообщениеДобавлено: 29 янв 2018, 10:40
ArmoredElite
Filosov писал(а):Не очень понятно чем осуществляется синхронизация. Я не претендую на специалиста, но я не вижу ни Command ни SyncVar. Почему управление камерой в Fixed?



Ну тут всё ясно... Иди дальше изучай юньку... До сетевой тебе далеко!