Commit c17469af by alsunj

Merge branch 'fix/refactor-pickuping-and-saving-object-reference-by-server' into 'main'

refactor interactables

See merge request alsunj/loputoo!15
parents abd25d17 3a5a4e15
Showing with 702 additions and 132 deletions
......@@ -24,3 +24,13 @@ MonoBehaviour:
SourcePrefabToOverride: {fileID: 0}
SourceHashToOverride: 0
OverridingTargetPrefab: {fileID: 0}
- Override: 0
Prefab: {fileID: 334567762338569054, guid: dc502d59cef13ed40b07aa18bd1a4167, type: 3}
SourcePrefabToOverride: {fileID: 0}
SourceHashToOverride: 0
OverridingTargetPrefab: {fileID: 0}
- Override: 0
Prefab: {fileID: 2142678194451976319, guid: 835d789898f8f3a4d97189425e75e8f6, type: 3}
SourcePrefabToOverride: {fileID: 0}
SourceHashToOverride: 0
OverridingTargetPrefab: {fileID: 0}
fileFormatVersion: 2
guid: 829aa7243d618c64dbb4d69139b249d0
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
using Unity.Netcode;
using UnityEngine;
public class Explosive : Pickupable, IExplosive
{
private ExplosiveSettings _explosiveSettings;
private BoxCollider _boxCollider;
private void Awake()
{
_boxCollider = GetComponent<BoxCollider>();
}
public void Explode()
{
throw new System.NotImplementedException();
}
public override void Pickup()
{
_boxCollider.isTrigger = true;
}
public override void PutDown()
{
_boxCollider.isTrigger = false;
// transform.position = position;
}
}
\ No newline at end of file
fileFormatVersion: 2
guid: 84af6268af84ad74da0d3c2323dd7b8f
\ No newline at end of file
using UnityEngine;
[CreateAssetMenu(fileName = "ExplosiveSettings", menuName = "Scriptable Objects/ExplosiveSettings")]
public class ExplosiveSettings : ScriptableObject
{
}
fileFormatVersion: 2
guid: 66230a11c233a404da90c824e752674d
\ No newline at end of file
using UnityEngine;
public interface IExplosive
{
public void Explode();
}
\ No newline at end of file
fileFormatVersion: 2
guid: acc20f98fc865e74098ff28629f1e93c
\ No newline at end of file
......@@ -22,11 +22,8 @@ public class Chest : NetworkBehaviour, IInteractable
[ServerRpc(RequireOwnership = false)]
private void ChestFoundServerRpc()
{
if (!_chestFound.Value)
{
ChestFoundClientRpc();
_chestFound.Value = true;
}
ChestFoundClientRpc();
_chestFound.Value = true;
}
[ClientRpc]
......@@ -38,8 +35,14 @@ public class Chest : NetworkBehaviour, IInteractable
}
public void Interact()
public bool Interact()
{
if (_chestFound.Value)
{
return false;
}
ChestFoundServerRpc();
return true;
}
}
\ No newline at end of file
......@@ -34,9 +34,10 @@ public class Door : NetworkBehaviour, IInteractable
.SetEase(Ease.OutBounce);
}
public void Interact()
public bool Interact()
{
RequestOpenDoorServerRpc();
return true;
}
[ServerRpc(RequireOwnership = false)]
......
......@@ -2,5 +2,5 @@ using UnityEngine;
public interface IInteractable
{
public void Interact();
public bool Interact();
}
\ No newline at end of file
......@@ -2,6 +2,6 @@ using UnityEngine;
public interface IPickupable
{
public void Pickup(GameObject targetobject);
public void PutDown(Vector3 position);
public void Pickup();
public void PutDown();
}
\ No newline at end of file
......@@ -4,34 +4,23 @@ using UnityEngine;
public class Key : Pickupable, IPickupable
{
private Quaternion _startingRotation;
private FollowTransform _followTransform;
// private Quaternion _startingRotation;
private BoxCollider _boxCollider;
private void Awake()
{
_followTransform = GetComponent<FollowTransform>();
_boxCollider = GetComponent<BoxCollider>();
}
private void Start()
{
_startingRotation = gameObject.transform.rotation;
}
public override void Pickup(GameObject pickupingTarget)
public override void Pickup()
{
GameObject placeHolder = pickupingTarget.GetComponent<PlayerPlacements>().playerRightHand;
_followTransform.SetTargetTransform(placeHolder.transform);
_boxCollider.isTrigger = true;
}
public override void PutDown(Vector3 position)
public override void PutDown()
{
_followTransform.SetTargetTransform(null);
_boxCollider.isTrigger = false;
transform.position = position;
transform.rotation = _startingRotation;
}
}
\ No newline at end of file
using System;
using Unity.Netcode;
using UnityEngine;
public abstract class Pickupable : NetworkBehaviour
public abstract class Pickupable : NetworkBehaviour, IEquatable<Pickupable>, IPickupable
{
private NetworkVariable<bool> isObjectPickedup = new NetworkVariable<bool>();
private FollowTransform _followTransform;
private Quaternion _startingRotation;
private void Start()
{
_followTransform = GetComponent<FollowTransform>();
if (_followTransform == null)
{
Debug.LogError("FollowTransform component not found on the GameObject.");
}
_startingRotation = transform.rotation;
}
public void RequestPutDownObject(Vector3 position)
public void RequestPutDownObject(NetworkObjectReference pickupingTarget)
{
RequestPutDownObjectServerRpc(position);
RequestPutDownObjectServerRpc(pickupingTarget);
}
[ServerRpc(RequireOwnership = false)]
private void RequestPutDownObjectServerRpc(Vector3 position)
private void RequestPutDownObjectServerRpc(NetworkObjectReference pickupingTarget)
{
if (isObjectPickedup.Value)
{
isObjectPickedup.Value = false;
PutDownObjectClientRpc(position);
Vector3 newPosition = Vector3.zero;
if (pickupingTarget.TryGet(out NetworkObject target))
{
newPosition = target.transform.position + target.transform.forward;
PlayerPlacements playerPlacements = target.GetComponent<PlayerPlacements>();
if (playerPlacements != null)
{
playerPlacements.ClearPlayerRightHandItem();
}
}
// Notify all clients to update their visuals
PutDownObjectClientRpc(newPosition);
}
}
[ClientRpc]
private void PutDownObjectClientRpc(Vector3 position)
private void PutDownObjectClientRpc(Vector3 newPosition)
{
PutDown(position);
_followTransform.SetTargetTransform(null);
transform.position = newPosition;
transform.rotation = _startingRotation;
// Update the visuals on the client
PutDown();
}
public void RequestPickupObject(NetworkObjectReference pickupingTarget)
......@@ -38,6 +67,18 @@ public abstract class Pickupable : NetworkBehaviour
if (!isObjectPickedup.Value)
{
isObjectPickedup.Value = true;
if (pickupingTarget.TryGet(out NetworkObject target))
{
PlayerPlacements playerPlacements = target.GetComponent<PlayerPlacements>();
if (playerPlacements != null)
{
playerPlacements.SetPlayerRightHandItem(new NetworkObjectReference(this.NetworkObject));
_followTransform.SetTargetTransform(playerPlacements.playerRightHand.transform);
}
}
// Notify all clients to update their visuals
PickupObjectClientRpc(pickupingTarget);
}
}
......@@ -47,14 +88,38 @@ public abstract class Pickupable : NetworkBehaviour
{
if (pickupingTarget.TryGet(out NetworkObject target))
{
Pickup(target.gameObject);
PlayerPlacements playerPlacements = target.GetComponent<PlayerPlacements>();
if (playerPlacements != null)
{
_followTransform.SetTargetTransform(playerPlacements.playerRightHand.transform);
}
}
Pickup();
}
public abstract void PutDown(Vector3 position);
public abstract void PutDown();
public abstract void Pickup();
public abstract void Pickup(GameObject pickupingTarget);
public bool Equals(Pickupable other)
{
if (other == null) return false;
return NetworkObjectId == other.NetworkObjectId;
}
public override bool Equals(object obj)
{
if (obj is Pickupable other)
{
return Equals(other);
}
return false;
}
public override int GetHashCode()
{
return NetworkObjectId.GetHashCode();
}
}
\ No newline at end of file
using System;
using UnityEngine;
using UnityEngine.Serialization;
public class FollowTransform : MonoBehaviour
{
private Transform targetTransform;
[SerializeField] private FollowTransformSettings _followTransformSettings;
[SerializeField] private FollowTransformSettings followTransformSettings;
public void SetTargetTransform(Transform targetTransform)
{
......@@ -19,8 +20,8 @@ public class FollowTransform : MonoBehaviour
return;
}
transform.position = targetTransform.position;
Vector3 targetEulerAngles = targetTransform.rotation.eulerAngles + _followTransformSettings.keyRotation;
transform.position = targetTransform.position + followTransformSettings.targetPositionOffset;
Vector3 targetEulerAngles = targetTransform.rotation.eulerAngles + followTransformSettings.targetRotationOffset;
transform.rotation = Quaternion.Euler(targetEulerAngles);
}
}
\ No newline at end of file
......@@ -10,6 +10,8 @@ public class PlayerController : NetworkBehaviour
[SerializeField] private PlayerInteractionSettings playerInteractionSettings;
[SerializeField] private float speed = 2f;
[SerializeField] private InputReader inputReader;
private PlayerPlacements _playerPlacements;
private PlayerManager _playerManager;
private PlayerAnimator _playerAnimator;
private Rigidbody _rb;
......@@ -140,6 +142,16 @@ public class PlayerController : NetworkBehaviour
{
Debug.LogError("Rigidbody is null");
}
else
{
_rb.isKinematic = false;
}
_playerPlacements = GetComponent<PlayerPlacements>();
if (_playerPlacements == null)
{
Debug.LogError("PlayerPlacements is null");
}
}
private void OnSprint(bool state)
......@@ -155,9 +167,7 @@ public class PlayerController : NetworkBehaviour
private void OnAttack()
{
if (_attackCooldownTimer > 0) return;
Debug.Log("attack started");
HitObject();
CheckForWeapons();
_attackCooldownTimer = attackCooldown; // Set cooldown duration
}
......@@ -324,91 +334,88 @@ public class PlayerController : NetworkBehaviour
private void CheckForPickupableAndInteractableCollision()
{
CheckForInteractableCollision();
if (CheckForInteractableCollision()) return;
CheckForPickupables();
}
private void CheckForInteractableCollision()
private bool CheckForInteractableCollision()
{
Collider[] hitColliders = Physics.OverlapSphere(transform.position,
Collider closestCollider = FindClosestCollider(transform.position,
playerInteractionSettings.interactableRadius,
playerInteractionSettings.interactableLayer);
foreach (var hitCollider in hitColliders)
if (closestCollider != null)
{
switch (hitCollider.GetComponent<IInteractable>())
var interactable = closestCollider.GetComponent<IInteractable>();
if (interactable != null)
{
case Chest chest:
RotatePlayerTowardsTarget(hitCollider);
_playerManager.playerEvents.PlayerInteract();
chest.Interact();
break;
case Door door:
RotatePlayerTowardsTarget(hitCollider);
RotatePlayerTowardsTarget(closestCollider);
if (interactable.Interact())
{
_playerManager.playerEvents.PlayerInteract();
door.Interact();
break;
return true;
}
}
}
return false;
}
private void CheckForPickupables()
{
Collider[] hitColliders = Physics.OverlapSphere(transform.position,
Collider closestCollider = FindClosestCollider(transform.position,
playerInteractionSettings.interactableRadius,
playerInteractionSettings.pickupableLayer);
foreach (var hitCollider in hitColliders)
if (closestCollider != null)
{
switch (hitCollider.GetComponent<IPickupable>())
switch (closestCollider.GetComponent<Pickupable>())
{
case Key key:
if (!isRightHandFull)
{
key.RequestPickupObject(
new NetworkObjectReference(gameObject.GetComponent<NetworkObject>()));
isRightHandFull = !isRightHandFull;
}
else
{
key.RequestPutDownObject(transform.position + transform.forward);
isRightHandFull = !isRightHandFull;
}
PickupObject(key);
break;
case Explosive explosive:
PickupObject(explosive);
break;
}
}
}
private void HitObject()
private void PickupObject(Pickupable pickupable)
{
Collider[] hitColliders = Physics.OverlapSphere(transform.position,
if (!_playerPlacements.IsRightHandFull())
{
pickupable.RequestPickupObject(
new NetworkObjectReference(gameObject.GetComponent<NetworkObject>()));
}
else
{
pickupable.RequestPutDownObject(
new NetworkObjectReference(gameObject.GetComponent<NetworkObject>()));
}
}
private void CheckForWeapons()
{
HitObject(hitDamage);
}
private void HitObject(float weaponHitDamage)
{
Collider closestCollider = FindClosestCollider(transform.position,
playerInteractionSettings.interactableRadius,
playerInteractionSettings.destructableLayer);
if (hitColliders.Length > 0)
if (closestCollider != null)
{
Collider closestCollider = null;
float closestDistance = float.MaxValue;
foreach (var hitCollider in hitColliders)
{
float distance = Vector3.Distance(transform.position, hitCollider.transform.position);
if (distance < closestDistance)
{
closestDistance = distance;
closestCollider = hitCollider;
}
}
if (closestCollider != null)
switch (closestCollider.GetComponent<IDestrucable>())
{
switch (closestCollider.GetComponent<IDestrucable>())
{
case Barrel barrel:
RotatePlayerTowardsTarget(closestCollider);
_playerManager.playerEvents.PlayerAttack();
barrel.TakeDamage(hitDamage);
break;
}
case Barrel barrel:
RotatePlayerTowardsTarget(closestCollider);
_playerManager.playerEvents.PlayerAttack();
barrel.TakeDamage(weaponHitDamage);
break;
}
}
else
......@@ -417,6 +424,25 @@ public class PlayerController : NetworkBehaviour
}
}
private Collider FindClosestCollider(Vector3 position, float radius, LayerMask layerMask)
{
Collider[] hitColliders = Physics.OverlapSphere(position, radius, layerMask);
Collider closestCollider = null;
float closestDistance = float.MaxValue;
foreach (var hitCollider in hitColliders)
{
float distance = Vector3.Distance(position, hitCollider.transform.position);
if (distance < closestDistance)
{
closestDistance = distance;
closestCollider = hitCollider;
}
}
return closestCollider;
}
private void RotatePlayerTowardsTarget(Collider hit)
{
Vector3 direction = (hit.transform.position - transform.position).normalized;
......
using Unity.Netcode;
using UnityEngine;
public class PlayerPlacements : MonoBehaviour
public class PlayerPlacements : NetworkBehaviour
{
public GameObject playerRightHand;
public GameObject playerLeftHand;
private NetworkVariable<NetworkObjectReference> playerRightHandItem = new NetworkVariable<NetworkObjectReference>();
private NetworkVariable<NetworkObjectReference> playerLeftHandItem = new NetworkVariable<NetworkObjectReference>();
void Start()
{
playerRightHand = transform.Find("PlayerVisual/Skeleton_Minion/Rig/root/handIK.r/EquippedItemR")
?.gameObject;
playerRightHand = transform.Find("PlayerVisual/Skeleton_Minion/Rig/root/handIK.r/EquippedItemR")?.gameObject;
if (playerRightHand == null)
{
Debug.LogError("EquippedItemR not found in player rig");
}
playerLeftHand = transform.Find("PlayerVisual/Skeleton_Minion/Rig/root/handIK.l/EquippedItemL")
?.gameObject;
playerLeftHand = transform.Find("PlayerVisual/Skeleton_Minion/Rig/root/handIK.l/EquippedItemL")?.gameObject;
if (playerLeftHand == null)
{
Debug.LogError("EquippedItemL not found in player rig");
}
}
public void SetPlayerRightHandItem(NetworkObjectReference newItem)
{
SetPlayerRightHandItemServerRpc(newItem);
}
[ServerRpc(RequireOwnership = false)]
private void SetPlayerRightHandItemServerRpc(NetworkObjectReference newItem)
{
if (newItem.TryGet(out NetworkObject networkObject))
{
Pickupable pickupable = networkObject.GetComponent<Pickupable>();
if (pickupable != null)
{
playerRightHandItem.Value = newItem;
// UpdatePlayerRightHandItemClientRpc(newItem);
}
}
}
public void ClearPlayerRightHandItem()
{
ClearPlayerRightHandItemServerRpc();
}
[ServerRpc(RequireOwnership = false)]
private void ClearPlayerRightHandItemServerRpc()
{
playerRightHandItem.Value = new NetworkObjectReference();
// UpdatePlayerRightHandItemClientRpc(playerRightHandItem.Value);
}
public bool IsRightHandFull()
{
if (playerRightHandItem.Value.TryGet(out NetworkObject networkObject))
{
return networkObject.GetComponent<Pickupable>() != null;
}
return false;
}
}
\ No newline at end of file
using UnityEngine;
using UnityEngine.Serialization;
[CreateAssetMenu(fileName = "FollowTransformSettings", menuName = "Scriptable Objects/FollowTransformSettings")]
public class FollowTransformSettings : ScriptableObject
{
public Vector3 keyRotation = new Vector3(180, 180, 0);
public Vector3 targetRotationOffset = new Vector3(180, 0, 0);
public Vector3 targetPositionOffset = new Vector3(0f, 0, 0);
}
\ No newline at end of file
fileFormatVersion: 2
guid: 7be27618549ff0a4dbe13b265dcf5514
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &2142678194451976319
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7737315830459736898}
- component: {fileID: 163114042722539874}
- component: {fileID: 783618015449435042}
- component: {fileID: 8877540788060270672}
- component: {fileID: 2810168411361310003}
m_Layer: 8
m_Name: ExplosiveB
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &7737315830459736898
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2142678194451976319}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0.16, y: 0, z: -5.62}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 5365762707953752018}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &163114042722539874
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2142678194451976319}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3}
m_Name:
m_EditorClassIdentifier:
GlobalObjectIdHash: 1023450164
InScenePlacedSourceGlobalObjectIdHash: 0
DeferredDespawnTick: 0
Ownership: 1
AlwaysReplicateAsRoot: 0
SynchronizeTransform: 1
ActiveSceneSynchronization: 0
SceneMigrationSynchronization: 1
SpawnWithObservers: 1
DontDestroyWithOwner: 0
AutoObjectParentSync: 1
SyncOwnerTransformWhenParented: 1
AllowOwnerToParent: 0
--- !u!114 &783618015449435042
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2142678194451976319}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 84af6268af84ad74da0d3c2323dd7b8f, type: 3}
m_Name:
m_EditorClassIdentifier:
ShowTopMostFoldoutHeaderGroup: 1
--- !u!114 &8877540788060270672
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2142678194451976319}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 357ddf00dbde76441827eb57fd190bf8, type: 3}
m_Name:
m_EditorClassIdentifier:
followTransformSettings: {fileID: 11400000, guid: 28235d84f1cad684594e8fce9f404b5d, type: 2}
--- !u!65 &2810168411361310003
BoxCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2142678194451976319}
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 0
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 3
m_Size: {x: 0.43, y: 0.93, z: 0.47}
m_Center: {x: 0, y: 0.45, z: 0}
--- !u!1001 &5619856531658010681
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 7737315830459736898}
m_Modifications:
- target: {fileID: -8679921383154817045, guid: 7e3b0ec4662bc1f419b4aeb3bd8c9751, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 7e3b0ec4662bc1f419b4aeb3bd8c9751, type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 7e3b0ec4662bc1f419b4aeb3bd8c9751, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 7e3b0ec4662bc1f419b4aeb3bd8c9751, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 7e3b0ec4662bc1f419b4aeb3bd8c9751, type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 7e3b0ec4662bc1f419b4aeb3bd8c9751, type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 7e3b0ec4662bc1f419b4aeb3bd8c9751, type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 7e3b0ec4662bc1f419b4aeb3bd8c9751, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 7e3b0ec4662bc1f419b4aeb3bd8c9751, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 7e3b0ec4662bc1f419b4aeb3bd8c9751, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 919132149155446097, guid: 7e3b0ec4662bc1f419b4aeb3bd8c9751, type: 3}
propertyPath: m_Name
value: bottle_B_green
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 7e3b0ec4662bc1f419b4aeb3bd8c9751, type: 3}
--- !u!4 &5365762707953752018 stripped
Transform:
m_CorrespondingSourceObject: {fileID: -8679921383154817045, guid: 7e3b0ec4662bc1f419b4aeb3bd8c9751, type: 3}
m_PrefabInstance: {fileID: 5619856531658010681}
m_PrefabAsset: {fileID: 0}
fileFormatVersion: 2
guid: 835d789898f8f3a4d97189425e75e8f6
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
......@@ -54,8 +54,8 @@ BoxCollider:
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 3
m_Size: {x: 1, y: 1.9, z: 1}
m_Center: {x: 0, y: 0, z: 0}
m_Size: {x: 1.54, y: 1, z: 1.06}
m_Center: {x: 0, y: 0.5, z: 0}
--- !u!114 &3719657908984160168
MonoBehaviour:
m_ObjectHideFlags: 0
......
......@@ -9,10 +9,10 @@ GameObject:
serializedVersion: 6
m_Component:
- component: {fileID: 1667863745995374288}
- component: {fileID: 3668773499323874180}
- component: {fileID: 3196686290097198713}
- component: {fileID: 5155192956440818289}
- component: {fileID: 9087763765203173466}
- component: {fileID: 3668773499323874180}
m_Layer: 8
m_Name: Key
m_TagString: Untagged
......@@ -36,6 +36,31 @@ Transform:
- {fileID: 7749746802626306604}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0}
--- !u!114 &3668773499323874180
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8050255731901760503}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3}
m_Name:
m_EditorClassIdentifier:
GlobalObjectIdHash: 2284586459
InScenePlacedSourceGlobalObjectIdHash: 2284586459
DeferredDespawnTick: 0
Ownership: 1
AlwaysReplicateAsRoot: 0
SynchronizeTransform: 1
ActiveSceneSynchronization: 0
SceneMigrationSynchronization: 1
SpawnWithObservers: 1
DontDestroyWithOwner: 0
AutoObjectParentSync: 1
SyncOwnerTransformWhenParented: 1
AllowOwnerToParent: 0
--- !u!114 &3196686290097198713
MonoBehaviour:
m_ObjectHideFlags: 0
......@@ -82,32 +107,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 357ddf00dbde76441827eb57fd190bf8, type: 3}
m_Name:
m_EditorClassIdentifier:
_followTransformSettings: {fileID: 11400000, guid: 5f3f18b211ea1704fbb884929d9cf33d, type: 2}
--- !u!114 &3668773499323874180
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8050255731901760503}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3}
m_Name:
m_EditorClassIdentifier:
GlobalObjectIdHash: 2868596387
InScenePlacedSourceGlobalObjectIdHash: 2284586459
DeferredDespawnTick: 0
Ownership: 1
AlwaysReplicateAsRoot: 0
SynchronizeTransform: 1
ActiveSceneSynchronization: 0
SceneMigrationSynchronization: 1
SpawnWithObservers: 1
DontDestroyWithOwner: 0
AutoObjectParentSync: 1
SyncOwnerTransformWhenParented: 1
AllowOwnerToParent: 0
followTransformSettings: {fileID: 11400000, guid: 5f3f18b211ea1704fbb884929d9cf33d, type: 2}
--- !u!1001 &7783936310330246599
PrefabInstance:
m_ObjectHideFlags: 0
......
......@@ -1220,6 +1220,11 @@ PrefabInstance:
insertIndex: -1
addedObject: {fileID: 1768812363}
m_SourcePrefab: {fileID: 100100000, guid: 2abc46d65f2e2d7439c7689b3c2142c4, type: 3}
--- !u!4 &506108082 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 7737315830459736898, guid: 835d789898f8f3a4d97189425e75e8f6, type: 3}
m_PrefabInstance: {fileID: 1741617890852014166}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &525142603
PrefabInstance:
m_ObjectHideFlags: 0
......@@ -2025,6 +2030,38 @@ PrefabInstance:
insertIndex: -1
addedObject: {fileID: 1763219176}
m_SourcePrefab: {fileID: 100100000, guid: 6cdf95d64713790459b9ebea4dd28535, type: 3}
--- !u!1 &993885651
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 993885652}
m_Layer: 0
m_Name: Explosives
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &993885652
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 993885651}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 506108082}
m_Father: {fileID: 1591624653}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1044931419 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 919132149155446097, guid: 2abc46d65f2e2d7439c7689b3c2142c4, type: 3}
......@@ -3035,6 +3072,7 @@ Transform:
- {fileID: 549995642}
- {fileID: 1132077849}
- {fileID: 473138433}
- {fileID: 993885652}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1605121339 stripped
......@@ -4631,6 +4669,83 @@ Transform:
m_CorrespondingSourceObject: {fileID: 8681228075763733043, guid: 525df842114a50742b87e2282140ad02, type: 3}
m_PrefabInstance: {fileID: 365097653882966823}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &1741617890852014166
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 993885652}
m_Modifications:
- target: {fileID: 163114042722539874, guid: 835d789898f8f3a4d97189425e75e8f6, type: 3}
propertyPath: GlobalObjectIdHash
value: 1837939063
objectReference: {fileID: 0}
- target: {fileID: 163114042722539874, guid: 835d789898f8f3a4d97189425e75e8f6, type: 3}
propertyPath: InScenePlacedSourceGlobalObjectIdHash
value: 1023450164
objectReference: {fileID: 0}
- target: {fileID: 2142678194451976319, guid: 835d789898f8f3a4d97189425e75e8f6, type: 3}
propertyPath: m_Name
value: ExplosiveB
objectReference: {fileID: 0}
- target: {fileID: 2810168411361310003, guid: 835d789898f8f3a4d97189425e75e8f6, type: 3}
propertyPath: m_Center.y
value: -0.16
objectReference: {fileID: 0}
- target: {fileID: 5365762707953752018, guid: 835d789898f8f3a4d97189425e75e8f6, type: 3}
propertyPath: m_LocalPosition.y
value: -0.6
objectReference: {fileID: 0}
- target: {fileID: 7737315830459736898, guid: 835d789898f8f3a4d97189425e75e8f6, type: 3}
propertyPath: m_LocalPosition.x
value: 0.16
objectReference: {fileID: 0}
- target: {fileID: 7737315830459736898, guid: 835d789898f8f3a4d97189425e75e8f6, type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7737315830459736898, guid: 835d789898f8f3a4d97189425e75e8f6, type: 3}
propertyPath: m_LocalPosition.z
value: -5.62
objectReference: {fileID: 0}
- target: {fileID: 7737315830459736898, guid: 835d789898f8f3a4d97189425e75e8f6, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 7737315830459736898, guid: 835d789898f8f3a4d97189425e75e8f6, type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7737315830459736898, guid: 835d789898f8f3a4d97189425e75e8f6, type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7737315830459736898, guid: 835d789898f8f3a4d97189425e75e8f6, type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7737315830459736898, guid: 835d789898f8f3a4d97189425e75e8f6, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7737315830459736898, guid: 835d789898f8f3a4d97189425e75e8f6, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7737315830459736898, guid: 835d789898f8f3a4d97189425e75e8f6, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8877540788060270672, guid: 835d789898f8f3a4d97189425e75e8f6, type: 3}
propertyPath: followTransformSettings
value:
objectReference: {fileID: 11400000, guid: 28235d84f1cad684594e8fce9f404b5d, type: 2}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 835d789898f8f3a4d97189425e75e8f6, type: 3}
--- !u!1001 &2257826592388196585
PrefabInstance:
m_ObjectHideFlags: 0
......@@ -4687,6 +4802,10 @@ PrefabInstance:
propertyPath: m_Name
value: Key
objectReference: {fileID: 0}
- target: {fileID: 9087763765203173466, guid: 1d9ae894a89fd38449f1ce889f52d1ad, type: 3}
propertyPath: followTransformSettings
value:
objectReference: {fileID: 11400000, guid: 5f3f18b211ea1704fbb884929d9cf33d, type: 2}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
......
fileFormatVersion: 2
guid: 722e5151599b73a4daaea8098a5a241d
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 66230a11c233a404da90c824e752674d, type: 3}
m_Name: ExplosiveSettings
m_EditorClassIdentifier:
fileFormatVersion: 2
guid: 20bb5c8cfaaf529499b561cc27ff27e5
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ab7df33a53f46df4e9ecdcf785116f66, type: 3}
m_Name: ExplosiveBTransformSettings
m_EditorClassIdentifier:
targetRotationOffset: {x: 180, y: 0, z: 0}
targetPositionOffset: {x: 0, y: 0, z: 0}
fileFormatVersion: 2
guid: 28235d84f1cad684594e8fce9f404b5d
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
......@@ -12,4 +12,5 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: ab7df33a53f46df4e9ecdcf785116f66, type: 3}
m_Name: KeyTransformSettings
m_EditorClassIdentifier:
keyRotation: {x: 180, y: 180, z: 0}
targetRotationOffset: {x: 180, y: 180, z: 0}
targetPositionOffset: {x: 0, y: 0, z: 0}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment