2016-06-10 96 views
0

我想在unity3d中使用類似暗黑破壞神般的相機系統創建多人遊戲。所以無論我點擊屏幕。該系統在單人模式下運行良好,我不需要在玩家預製件中包含相機。但是現在我面臨的問題是,我的相機旋轉也受到我預製父母旋轉的影響。層次結構是這樣的:預製內相機旋轉

enter image description here

有加,看起來像這樣的相機的腳本:

using UnityEngine; 
using System.Collections; 

public class MainCameraComponent : MonoBehaviour { 

public GameObject Reaper; 
private Vector3 offset; 


void Start() { 
    offset = transform.position - Reaper.transform.position; 
} 

// Update is called once per frame 
void LateUpdate() { 
    transform.position = Reaper.transform.position + offset; 
} 
} 

當我運行遊戲的攝像機始終保持我的性格後面,而我希望它始終保持相同的旋轉。所以如果我命令我的角色向北走,我會看到他的背部,如果它向南走,我想看到前方。

enter image description here enter image description here

通知陰影的變化,(因此旋轉),但我怎麼總是面對我的模型的背部。 TLDR:我希望我的孩子相機忽略其父母的旋轉變化並且是靜態的。同時讓我的相機位置由其父母指導。據我所知,似乎不可能讓網絡管理員實例化一個新玩家預製,然後在相同的層級上連接一臺攝像機。

任何幫助將不勝感激。

回答

1

不過現在我所面臨的問題,在我的相機旋轉也受我的預製父母的旋轉

那是因爲你的Camera是玩家的一個孩子,因此將盡一切的玩家/父母正在做。 您的相機不應位於播放器之下。刪除它並確保它不是玩家或任何其他對象的孩子。該腳本應該可以工作,或者讓相機跟隨播放器,而不會使GameObject的子節點成爲Camera

LateUpdate函數中刪除Player = GameObject.Find ("Player");。您已經在Start函數中完成了此操作,因此不需要在LateUpdate函數中執行此操作。不應該直接從LateUpdate函數中調用GameObject.Find ("Player");。它會減慢你的遊戲速度。

編輯:

閱讀您的評論之後,它看起來像要實例與相機的球員。你可以做到這一點,而不使相機成爲你的播放器的孩子。

您當前的設置

  • 球員

    • 型號
      • 彈網
    • 相機

所以你的相機是在播放器下方。

你新安裝

  • PlayerPrefab

    • 球員

      • 型號
        • 彈網
    • 相機(有關安裝腳本本)

Camera現在PlayerPrefab,而不是球員。現在,您可以實例化PlayerPrefab並使用腳本移動播放器。我不知道您的移動腳本是什麼樣子,但它應該附加到播放器而不是PlayerPrefabPlayerPrefab用於保存所有內容,以便它可以輕鬆實例化爲一個。您的問題中的代碼應附加到您的Camera

+0

我這是在第一個地方,它實際上工作。我製作了一個名爲playerContainer的空白gameObject,並將相機添加到該相機中,以便它與玩家處於同一層級。我面臨的問題是我需要訪問播放器中網絡標識給出的「isLocalPlayer」屬性。因爲網絡身份可能只出現一次,我需要將它放到容器中,以便網絡管理員接受它作爲玩家預製。那麼,我將如何從層次結構中較低的某處訪問我的「isLocalPlayer」屬性? –

+0

@MarkStroeven修改我的答案,可能會解決您的網絡問題。從編輯下來閱讀。對網絡身份不太瞭解,但可以將其附加到作爲所有預製項目的父項的「PlayerPrefab」。 – Programmer