Updated Additive Example (#956)

* Updated Additive Example

* Renamed cube to visor
This commit is contained in:
MrGadget 2019-07-11 12:54:38 +00:00 committed by vis2k
parent 7490094904
commit 7f966c9afb
6 changed files with 81 additions and 155 deletions

View File

@ -1,87 +1,5 @@
%YAML 1.1 %YAML 1.1
%TAG !u! tag:unity3d.com,2011: %TAG !u! tag:unity3d.com,2011:
--- !u!1 &2720178739875597319
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8740139267343819840}
- component: {fileID: 1782430381883734809}
- component: {fileID: 3878212865935595091}
m_Layer: 0
m_Name: Camera
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &8740139267343819840
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2720178739875597319}
m_LocalRotation: {x: 0.08715578, y: -0, z: -0, w: 0.9961947}
m_LocalPosition: {x: 0, y: 3, z: -8}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 5328458565928408179}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 10, y: 0, z: 0}
--- !u!20 &1782430381883734809
Camera:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2720178739875597319}
m_Enabled: 0
serializedVersion: 2
m_ClearFlags: 1
m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
m_projectionMatrixMode: 1
m_SensorSize: {x: 36, y: 24}
m_LensShift: {x: 0, y: 0}
m_GateFitMode: 2
m_FocalLength: 50
m_NormalizedViewPortRect:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
near clip plane: 0.3
far clip plane: 1000
field of view: 60
orthographic: 0
orthographic size: 5
m_Depth: 0
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_RenderingPath: -1
m_TargetTexture: {fileID: 0}
m_TargetDisplay: 0
m_TargetEye: 3
m_HDR: 1
m_AllowMSAA: 1
m_AllowDynamicResolution: 0
m_ForceIntoRT: 0
m_OcclusionCulling: 1
m_StereoConvergence: 10
m_StereoSeparation: 0.022
--- !u!81 &3878212865935595091
AudioListener:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2720178739875597319}
m_Enabled: 1
--- !u!1 &5815001218983416211 --- !u!1 &5815001218983416211
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -94,7 +12,7 @@ GameObject:
- component: {fileID: 1800893346221236401} - component: {fileID: 1800893346221236401}
- component: {fileID: 136369082707552984} - component: {fileID: 136369082707552984}
m_Layer: 0 m_Layer: 0
m_Name: Cube m_Name: Visor
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
m_NavMeshLayer: 0 m_NavMeshLayer: 0
@ -194,7 +112,6 @@ Transform:
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: m_Children:
- {fileID: 3254954141432383832} - {fileID: 3254954141432383832}
- {fileID: 8740139267343819840}
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_RootOrder: 0 m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@ -273,8 +190,8 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 9b91ecbcc199f4492b9a91e820070131, type: 3} m_Script: {fileID: 11500000, guid: 9b91ecbcc199f4492b9a91e820070131, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
m_ServerOnly: 0 serverOnly: 0
m_LocalPlayerAuthority: 1 localPlayerAuthority: 1
m_AssetId: a5bdca0a2315d43499be7dcef473fbc7 m_AssetId: a5bdca0a2315d43499be7dcef473fbc7
m_SceneId: 0 m_SceneId: 0
--- !u!114 &8704659178864205755 --- !u!114 &8704659178864205755
@ -289,15 +206,20 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: e8f68561248aaca4fb96847ce24742ee, type: 3} m_Script: {fileID: 11500000, guid: e8f68561248aaca4fb96847ce24742ee, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
syncInterval: 0.1 syncInterval: 0
moveSpeed: 350
horiz: 0
vert: 0
turn: 0
turnSpeedAccel: 30
turnSpeedDecel: 30
maxTurnSpeed: 100
playerColor: {r: 0, g: 0, b: 0, a: 1} playerColor: {r: 0, g: 0, b: 0, a: 1}
moveSpeed: 8
turnSpeedAccel: 5
turnSpeedDecel: 5
maxTurnSpeed: 150
jumpSpeed: 0
maxJumpSpeed: 5
jumpFactor: 0.05
horizontal: 0
vertical: 0
turn: 0
isGrounded: 1
isFalling: 0
--- !u!114 &887491563423388292 --- !u!114 &887491563423388292
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0

View File

@ -544,11 +544,11 @@ Camera:
width: 1 width: 1
height: 1 height: 1
near clip plane: 0.3 near clip plane: 0.3
far clip plane: 11 far clip plane: 1000
field of view: 60 field of view: 60
orthographic: 1 orthographic: 0
orthographic size: 25 orthographic size: 5
m_Depth: -1 m_Depth: 0
m_CullingMask: m_CullingMask:
serializedVersion: 2 serializedVersion: 2
m_Bits: 4294967295 m_Bits: 4294967295
@ -571,7 +571,7 @@ Transform:
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 534669902} m_GameObject: {fileID: 534669902}
m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068}
m_LocalPosition: {x: 0, y: 10, z: 0} m_LocalPosition: {x: 0, y: 50, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: [] m_Children: []
m_Father: {fileID: 0} m_Father: {fileID: 0}
@ -1855,7 +1855,7 @@ MonoBehaviour:
OnClientDataReceived: OnClientDataReceived:
m_PersistentCalls: m_PersistentCalls:
m_Calls: [] m_Calls: []
m_TypeName: Mirror.UnityEventByteArray, Mirror, Version=0.0.0.0, Culture=neutral, m_TypeName: Mirror.UnityEventArraySegment, Mirror, Version=0.0.0.0, Culture=neutral,
PublicKeyToken=null PublicKeyToken=null
OnClientError: OnClientError:
m_PersistentCalls: m_PersistentCalls:
@ -1874,7 +1874,7 @@ MonoBehaviour:
OnServerDataReceived: OnServerDataReceived:
m_PersistentCalls: m_PersistentCalls:
m_Calls: [] m_Calls: []
m_TypeName: Mirror.UnityEventIntByteArray, Mirror, Version=0.0.0.0, Culture=neutral, m_TypeName: Mirror.UnityEventIntArraySegment, Mirror, Version=0.0.0.0, Culture=neutral,
PublicKeyToken=null PublicKeyToken=null
OnServerError: OnServerError:
m_PersistentCalls: m_PersistentCalls:

View File

@ -21,7 +21,6 @@ public override void OnStartServer()
SceneManager.LoadSceneAsync(sceneName, LoadSceneMode.Additive); SceneManager.LoadSceneAsync(sceneName, LoadSceneMode.Additive);
Debug.LogFormat("Loaded {0}", sceneName); Debug.LogFormat("Loaded {0}", sceneName);
} }
//StartCoroutine(LoadScene(sceneName));
} }
IEnumerator LoadScene(string sceneName) IEnumerator LoadScene(string sceneName)

View File

@ -7,11 +7,6 @@ public class PlayerController : NetworkBehaviour
{ {
CharacterController characterController; CharacterController characterController;
public float moveSpeed = 300f;
public float maxTurnSpeed = 90f;
public float turnSpeedAccel = 30f;
public float turnSpeedDecel = 30f;
public override void OnStartServer() public override void OnStartServer()
{ {
base.OnStartServer(); base.OnStartServer();
@ -21,22 +16,20 @@ public override void OnStartServer()
[SyncVar(hook = nameof(SetColor))] [SyncVar(hook = nameof(SetColor))]
public Color playerColor = Color.black; public Color playerColor = Color.black;
// Unity makes a clone of the material when GetComponent<Renderer>().material is used // Unity makes a clone of the material when GetComponent<Renderer>().material is used
// Cache it here and Destroy it in OnDestroy to prevent a memory leak // Cache it here and Destroy it in OnDestroy to prevent a memory leak
Material materialClone; Material materialClone;
void SetColor(Color color) void SetColor(Color color)
{ {
if (materialClone == null) materialClone = GetComponent<Renderer>().material; if (materialClone == null) materialClone = GetComponent<Renderer>().material;
materialClone.color = color; materialClone.color = color;
} }
private void OnDestroy() private void OnDestroy()
{ {
Destroy(materialClone); Destroy(materialClone);
} }
Camera mainCam;
public override void OnStartLocalPlayer() public override void OnStartLocalPlayer()
{ {
@ -44,31 +37,28 @@ public override void OnStartLocalPlayer()
characterController = GetComponent<CharacterController>(); characterController = GetComponent<CharacterController>();
// Grab a refernce to the main camera so we can enable it again in OnDisable Camera.main.transform.SetParent(transform);
mainCam = Camera.main; Camera.main.transform.localPosition = new Vector3(0f, 3f, -8f);
Camera.main.transform.localEulerAngles = new Vector3(10f, 0f, 0f);
// Turn off the main camera because the Player prefab has its own camera
mainCam.enabled = false;
// Enable the local player's camera
GetComponentInChildren<Camera>().enabled = true;
} }
void OnDisable() [Header("Movement Settings")]
{ public float moveSpeed = 8f;
if (isLocalPlayer) public float turnSpeedAccel = 5f;
{ public float turnSpeedDecel = 5f;
// Disable the local player's camera public float maxTurnSpeed = 150f;
GetComponentInChildren<Camera>().enabled = false;
// Re-enable the main camera when Stop is pressed in the HUD [Header("Jump Settings")]
if (mainCam != null) mainCam.enabled = true; public float jumpSpeed = 0f;
} public float maxJumpSpeed = 5F;
} public float jumpFactor = .05F;
float horizontal = 0f; [Header("Diagnostics")]
float vertical = 0f; public float horizontal = 0f;
float turn = 0f; public float vertical = 0f;
public float turn = 0f;
public bool isGrounded = true;
public bool isFalling = false;
void Update() void Update()
{ {
@ -81,14 +71,21 @@ void Update()
turn -= turnSpeedAccel; turn -= turnSpeedAccel;
else if (Input.GetKey(KeyCode.E) && (turn < maxTurnSpeed)) else if (Input.GetKey(KeyCode.E) && (turn < maxTurnSpeed))
turn += turnSpeedAccel; turn += turnSpeedAccel;
else if (turn > turnSpeedDecel)
turn -= turnSpeedDecel;
else if (turn < -turnSpeedDecel)
turn += turnSpeedDecel;
else
turn = 0f;
if (!isFalling && Input.GetKey(KeyCode.Space) && (isGrounded || jumpSpeed < maxJumpSpeed))
jumpSpeed += maxJumpSpeed * jumpFactor;
else if (isGrounded)
isFalling = false;
else else
{ {
if (turn > turnSpeedDecel) isFalling = true;
turn -= turnSpeedDecel; jumpSpeed = 0;
else if (turn < -turnSpeedDecel)
turn += turnSpeedDecel;
else
turn = 0f;
} }
} }
@ -98,9 +95,17 @@ void FixedUpdate()
transform.Rotate(0f, turn * Time.fixedDeltaTime, 0f); transform.Rotate(0f, turn * Time.fixedDeltaTime, 0f);
Vector3 direction = Vector3.ClampMagnitude(new Vector3(horizontal, 0f, vertical), 1f) * moveSpeed; Vector3 direction = new Vector3(horizontal, jumpSpeed, vertical);
direction = Vector3.ClampMagnitude(direction, 1f);
direction = transform.TransformDirection(direction); direction = transform.TransformDirection(direction);
characterController.SimpleMove(direction * Time.fixedDeltaTime); direction *= moveSpeed;
if (jumpSpeed > 0)
characterController.Move(direction * Time.fixedDeltaTime);
else
characterController.SimpleMove(direction);
isGrounded = characterController.isGrounded;
} }
} }
} }

View File

@ -16,10 +16,10 @@ public enum LoadAction
// Tell the client to load a single subscene // Tell the client to load a single subscene
// This is called from ZoneHandler's server-only OnTrigger events // This is called from ZoneHandler's server-only OnTrigger events
[TargetRpc] [TargetRpc]
public void TargetLoadUnloadScene(NetworkConnection networkConnection, string SceneName, LoadAction loadAction) public void TargetLoadUnloadScene(NetworkConnection networkConnection, string sceneName, LoadAction loadAction)
{ {
// Check if server here because we already pre-loaded the subscenes on the server // Check if server here because we already pre-loaded the subscenes on the server
if (!isServer) StartCoroutine(LoadUnloadScene(SceneName, loadAction)); if (!isServer) StartCoroutine(LoadUnloadScene(sceneName, loadAction));
} }
// isBusy protects us from being overwhelmed by server messages to load several subscenes at once. // isBusy protects us from being overwhelmed by server messages to load several subscenes at once.

View File

@ -8,7 +8,7 @@ namespace Mirror.Examples.Additive
public class ShootingTankBehaviour : NetworkBehaviour public class ShootingTankBehaviour : NetworkBehaviour
{ {
[SyncVar] [SyncVar]
public Quaternion Rotation; public Quaternion rotation;
NetworkAnimator networkAnimator; NetworkAnimator networkAnimator;
@ -27,7 +27,7 @@ void Update()
ShootNearestPlayer(); ShootNearestPlayer();
if (isClient) if (isClient)
transform.rotation = Quaternion.Slerp(transform.rotation, Rotation, turnSpeed); transform.rotation = Quaternion.Slerp(transform.rotation, rotation, turnSpeed);
} }
[Server] [Server]
@ -51,7 +51,7 @@ void ShootNearestPlayer()
if (target != null) if (target != null)
{ {
transform.LookAt(target.transform.position + Vector3.down); transform.LookAt(target.transform.position + Vector3.down);
Rotation = transform.rotation; rotation = transform.rotation;
networkAnimator.SetTrigger("Fire"); networkAnimator.SetTrigger("Fire");
} }
} }