Ich versuche ein Multiplayer-Spiel in unity3d mit einem Diablo-ähnlichen Kamerasystem zu erstellen. Also wo auch immer ich auf den Bildschirm klicke. Das System funktionierte im Singleplayer, wo ich keine Kamera in ein Player-Prefab einbauen musste. Allerdings stehe ich jetzt vor dem Problem, dass meine Kamerarotation auch von der Rotation meines vorgefertigten Elternteils beeinflusst wird. Die Hierarchie sieht wie folgt aus:Kameradrehung in einem Fertighaus
Es gibt ein Skript zur Kamera hinzugefügt, die wie folgt aussieht:
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;
}
}
Wenn ich das Spiel die Kamera bleibt immer hinter meinem Charakter laufen, während ich möchte, dass es immer in der gleichen Rotation bleibt. Wenn ich also meinem Charakter befehlen würde, nach Norden zu gehen, würde ich seinen Rücken sehen, wenn er nach Süden gehen würde, wollte ich die Vorderseite sehen.
merken, wie die Schattenänderungen, (also die Drehung), aber ich immer die Rückseite meines Modells gegenüber. TLDR: Ich möchte, dass meine Kindkamera die Rotationsänderung ihres Elternteils ignoriert und statisch bleibt. während ich meine Kameraposition von ihrem Elternteil leiten lasse. Soweit ich weiß, scheint es unmöglich zu machen, dass ein Netzwerkmanager ein neues Player-Prefab instanziiert und anschließend eine Kamera auf der gleichen Hierarchieebene anbringt.
Jede Hilfe würde sehr geschätzt werden.
Ich tat dies an erster Stelle und es funktionierte tatsächlich. Ich habe ein leeres gameObject mit dem Namen playerContainer erstellt und die Kamera zu dieser hinzugefügt, so dass sie sich auf derselben Hierarchieebene wie der Spieler befand. Das Problem, mit dem ich konfrontiert wurde, war, dass ich auf die Eigenschaft "isLocalPlayer" zugreifen musste, die von einer Netzwerkidentität im Player stammt. Da eine Netzwerkidentität nur einmal in einem Prefab erscheinen kann, musste ich sie dem Container anzeigen, damit der Networkmanager sie als Player-Prefab akzeptiert. Also, wie würde ich auf meine "IsLocalPlayer" -Eigenschaft von irgendwo in der Hierarchie zugreifen? –
@MarkStroeven Meine Antwort geändert, die Ihr Netzwerkproblem lösen kann. Lesen Sie von EDIT herunter. Ich weiß nicht viel über Netzwerkidentität, aber Sie können es an die 'PlayerPrefab' anhängen, die das Eltern aller Prefabs ist. – Programmer