浏览代码

Merge remote-tracking branch 'upstream/master'

/main
mwert09 4 年前
当前提交
83f426f0
共有 11 个文件被更改,包括 294 次插入125 次删除
  1. 3
      UOP1_Project/Assets/Prefabs/Pig.prefab
  2. 185
      UOP1_Project/Assets/Scenes/CharController.unity
  3. 16
      UOP1_Project/Assets/Scripts/CameraManager.cs
  4. 8
      UOP1_Project/Assets/Scripts/Characters/Character.cs
  5. 6
      UOP1_Project/Assets/Scripts/InputReader.cs
  6. 14
      UOP1_Project/Assets/Prefabs/Input Reader.asset
  7. 8
      UOP1_Project/Assets/Prefabs/Input Reader.asset.meta
  8. 82
      UOP1_Project/Assets/Prefabs/SpawnSystem.prefab
  9. 7
      UOP1_Project/Assets/Prefabs/SpawnSystem.prefab.meta
  10. 79
      UOP1_Project/Assets/Scripts/SpawnSystem.cs
  11. 11
      UOP1_Project/Assets/Scripts/SpawnSystem.cs.meta

3
UOP1_Project/Assets/Prefabs/Pig.prefab


m_Script: {fileID: 11500000, guid: 45f6466be0a32e746abeb31b2a794001, type: 3}
m_Name:
m_EditorClassIdentifier:
inputReader: {fileID: 0}
inputReader: {fileID: 11400000, guid: 945ec0365077176418488737deed54be, type: 2}
gameplayCamera: {fileID: 0}
--- !u!114 &3341179906418240708
MonoBehaviour:

m_Name:
m_EditorClassIdentifier:
speed: 8
turnSmoothTime: 0.2
gravityMultiplier: 5
initialJumpForce: 10
jumpInputDuration: 0.4

185
UOP1_Project/Assets/Scenes/CharController.unity


m_StreamingVersion: 20170927
m_Priority: 10
m_StandbyUpdate: 2
m_LookAt: {fileID: 1961901426}
m_Follow: {fileID: 1961901426}
m_LookAt: {fileID: 0}
m_Follow: {fileID: 0}
m_Lens:
FieldOfView: 60
OrthographicSize: 5

m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 233317031}
m_LocalRotation: {x: 0.18994758, y: -0.20527026, z: 0.040647585, w: 0.959235}
m_LocalRotation: {x: 0.18994758, y: -0.2052703, z: 0.040647592, w: 0.959235}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:

m_Script: {fileID: 11500000, guid: 085156cba0e34b540aeddafe12d1e2f1, type: 3}
m_Name:
m_EditorClassIdentifier:
inputReader: {fileID: 1724036687}
inputReader: {fileID: 11400000, guid: 945ec0365077176418488737deed54be, type: 2}
mainCamera: {fileID: 1961065789}
freeLookVCam: {fileID: 1502793901}
--- !u!4 &526256411
Transform:

m_StreamingVersion: 20170927
m_Priority: 10
m_StandbyUpdate: 2
m_LookAt: {fileID: 1961901426}
m_Follow: {fileID: 1961901426}
m_LookAt: {fileID: 0}
m_Follow: {fileID: 0}
m_CommonLens: 1
m_Lens:
FieldOfView: 40

m_Father: {fileID: 0}
m_RootOrder: 16
m_LocalEulerAnglesHint: {x: -3.5180001, y: 26.324001, z: 28.011002}
--- !u!1 &1724036686
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1724036688}
- component: {fileID: 1724036687}
m_Layer: 0
m_Name: InputReader
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &1724036687
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1724036686}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 143f1e276019d54448855eb41708d190, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!4 &1724036688
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1724036686}
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_Children: []
m_Father: {fileID: 0}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &1809933188
PrefabInstance:
m_ObjectHideFlags: 0

m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1961065787}
m_LocalRotation: {x: 0.18778463, y: -0.20536137, z: 0.04018472, w: 0.95966077}
m_LocalRotation: {x: 0.18778464, y: -0.20536137, z: 0.040184725, w: 0.9596608}
m_LocalPosition: {x: 4.712467, y: 6.307, z: -24.900238}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []

m_CameraActivatedEvent:
m_PersistentCalls:
m_Calls: []
--- !u!4 &1961901426 stripped
--- !u!4 &2006012550 stripped
m_CorrespondingSourceObject: {fileID: 3341179906418240731, guid: 0fa393e1e37bc9e4e829c25a9452bcd3,
m_CorrespondingSourceObject: {fileID: 2125786286893897154, guid: e978d53d440e0814086759404585ac32,
m_PrefabInstance: {fileID: 3341179907149091243}
m_PrefabInstance: {fileID: 2093632590}
m_PrefabAsset: {fileID: 0}
--- !u!1 &2018663598
GameObject:

m_Script: {fileID: 11500000, guid: ac0b09e7857660247b1477e93731de29, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1001 &2370768318719443585
--- !u!1001 &2093632590
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2

- target: {fileID: 364731123117828817, guid: 1ebb75c12ef91014e94524019e01192d,
- target: {fileID: 2125786285293829329, guid: e978d53d440e0814086759404585ac32,
value: SmallBuilding
value: SpawnSystem
- target: {fileID: 384383464925863578, guid: 1ebb75c12ef91014e94524019e01192d,
- target: {fileID: 2125786285293829334, guid: e978d53d440e0814086759404585ac32,
type: 3}
propertyPath: _spawnLocations.Array.size
value: 1
objectReference: {fileID: 0}
- target: {fileID: 2125786285293829334, guid: e978d53d440e0814086759404585ac32,
type: 3}
propertyPath: _cameraManager
value:
objectReference: {fileID: 526256410}
- target: {fileID: 2125786285293829334, guid: e978d53d440e0814086759404585ac32,
type: 3}
propertyPath: _spawnLocations.Array.data[0]
value:
objectReference: {fileID: 2006012550}
- target: {fileID: 2125786285293829335, guid: e978d53d440e0814086759404585ac32,
value: -17.85
value: 0
- target: {fileID: 384383464925863578, guid: 1ebb75c12ef91014e94524019e01192d,
- target: {fileID: 2125786285293829335, guid: e978d53d440e0814086759404585ac32,
value: -0.14
value: 0
- target: {fileID: 384383464925863578, guid: 1ebb75c12ef91014e94524019e01192d,
- target: {fileID: 2125786285293829335, guid: e978d53d440e0814086759404585ac32,
value: 9.51
value: 0
- target: {fileID: 384383464925863578, guid: 1ebb75c12ef91014e94524019e01192d,
- target: {fileID: 2125786285293829335, guid: e978d53d440e0814086759404585ac32,
value: -0
value: 0
- target: {fileID: 384383464925863578, guid: 1ebb75c12ef91014e94524019e01192d,
- target: {fileID: 2125786285293829335, guid: e978d53d440e0814086759404585ac32,
value: -0
value: 0
- target: {fileID: 384383464925863578, guid: 1ebb75c12ef91014e94524019e01192d,
- target: {fileID: 2125786285293829335, guid: e978d53d440e0814086759404585ac32,
value: -0.019262606
value: 0
- target: {fileID: 384383464925863578, guid: 1ebb75c12ef91014e94524019e01192d,
- target: {fileID: 2125786285293829335, guid: e978d53d440e0814086759404585ac32,
value: 0.99981445
value: 1
- target: {fileID: 384383464925863578, guid: 1ebb75c12ef91014e94524019e01192d,
- target: {fileID: 2125786285293829335, guid: e978d53d440e0814086759404585ac32,
value: 15
value: 1
- target: {fileID: 384383464925863578, guid: 1ebb75c12ef91014e94524019e01192d,
- target: {fileID: 2125786285293829335, guid: e978d53d440e0814086759404585ac32,
- target: {fileID: 384383464925863578, guid: 1ebb75c12ef91014e94524019e01192d,
- target: {fileID: 2125786285293829335, guid: e978d53d440e0814086759404585ac32,
- target: {fileID: 384383464925863578, guid: 1ebb75c12ef91014e94524019e01192d,
- target: {fileID: 2125786285293829335, guid: e978d53d440e0814086759404585ac32,
value: -2.207
value: 0
m_SourcePrefab: {fileID: 100100000, guid: 1ebb75c12ef91014e94524019e01192d, type: 3}
--- !u!1001 &3341179907149091243
m_SourcePrefab: {fileID: 100100000, guid: e978d53d440e0814086759404585ac32, type: 3}
--- !u!1001 &2370768318719443585
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2

- target: {fileID: 211818859182309264, guid: 0fa393e1e37bc9e4e829c25a9452bcd3,
type: 3}
propertyPath: inputReader
value:
objectReference: {fileID: 1724036687}
- target: {fileID: 211818859182309264, guid: 0fa393e1e37bc9e4e829c25a9452bcd3,
type: 3}
propertyPath: gameplayCamera
value:
objectReference: {fileID: 1961065790}
- target: {fileID: 3341179906418240709, guid: 0fa393e1e37bc9e4e829c25a9452bcd3,
- target: {fileID: 364731123117828817, guid: 1ebb75c12ef91014e94524019e01192d,
value: Pig
value: SmallBuilding
- target: {fileID: 3341179906418240731, guid: 0fa393e1e37bc9e4e829c25a9452bcd3,
- target: {fileID: 384383464925863578, guid: 1ebb75c12ef91014e94524019e01192d,
value: 0.62
value: -17.85
- target: {fileID: 3341179906418240731, guid: 0fa393e1e37bc9e4e829c25a9452bcd3,
- target: {fileID: 384383464925863578, guid: 1ebb75c12ef91014e94524019e01192d,
value: 0.307
value: -0.14
- target: {fileID: 3341179906418240731, guid: 0fa393e1e37bc9e4e829c25a9452bcd3,
- target: {fileID: 384383464925863578, guid: 1ebb75c12ef91014e94524019e01192d,
value: -15.776
value: 9.51
- target: {fileID: 3341179906418240731, guid: 0fa393e1e37bc9e4e829c25a9452bcd3,
- target: {fileID: 384383464925863578, guid: 1ebb75c12ef91014e94524019e01192d,
value: 0
value: -0
- target: {fileID: 3341179906418240731, guid: 0fa393e1e37bc9e4e829c25a9452bcd3,
- target: {fileID: 384383464925863578, guid: 1ebb75c12ef91014e94524019e01192d,
value: 0
value: -0
- target: {fileID: 3341179906418240731, guid: 0fa393e1e37bc9e4e829c25a9452bcd3,
- target: {fileID: 384383464925863578, guid: 1ebb75c12ef91014e94524019e01192d,
value: 0
value: -0.019262606
- target: {fileID: 3341179906418240731, guid: 0fa393e1e37bc9e4e829c25a9452bcd3,
- target: {fileID: 384383464925863578, guid: 1ebb75c12ef91014e94524019e01192d,
value: 1
value: 0.99981445
- target: {fileID: 3341179906418240731, guid: 0fa393e1e37bc9e4e829c25a9452bcd3,
- target: {fileID: 384383464925863578, guid: 1ebb75c12ef91014e94524019e01192d,
value: 29
value: 15
- target: {fileID: 3341179906418240731, guid: 0fa393e1e37bc9e4e829c25a9452bcd3,
- target: {fileID: 384383464925863578, guid: 1ebb75c12ef91014e94524019e01192d,
- target: {fileID: 3341179906418240731, guid: 0fa393e1e37bc9e4e829c25a9452bcd3,
- target: {fileID: 384383464925863578, guid: 1ebb75c12ef91014e94524019e01192d,
- target: {fileID: 3341179906418240731, guid: 0fa393e1e37bc9e4e829c25a9452bcd3,
- target: {fileID: 384383464925863578, guid: 1ebb75c12ef91014e94524019e01192d,
value: 0
value: -2.207
m_SourcePrefab: {fileID: 100100000, guid: 0fa393e1e37bc9e4e829c25a9452bcd3, type: 3}
m_SourcePrefab: {fileID: 100100000, guid: 1ebb75c12ef91014e94524019e01192d, type: 3}
--- !u!1001 &6560919939139749480
PrefabInstance:
m_ObjectHideFlags: 0

16
UOP1_Project/Assets/Scripts/CameraManager.cs


public class CameraManager : MonoBehaviour
{
public InputReader inputReader;
public Camera mainCamera;
[Tooltip("General multiplier for camera sensitivity/speed")]
[Range(1.0f, 20.0f)]
[SerializeField] private float cameraSensitivity = 7.0f;
public void SetupProtagonistVirtualCamera(Transform target)
{
freeLookVCam.Follow = target;
freeLookVCam.LookAt = target;
}
//...
//Removes all listeners to the events coming from the InputReader script
//...
freeLookVCam.m_XAxis.m_InputAxisValue = cameraMovement.x * Time.smoothDeltaTime * cameraSensitivity;
freeLookVCam.m_YAxis.m_InputAxisValue = cameraMovement.y * Time.smoothDeltaTime * cameraSensitivity;
freeLookVCam.m_XAxis.m_InputAxisValue = cameraMovement.x * Time.smoothDeltaTime;
freeLookVCam.m_YAxis.m_InputAxisValue = cameraMovement.y * Time.smoothDeltaTime;
}
}

8
UOP1_Project/Assets/Scripts/Characters/Character.cs


[Tooltip("The maximum speed reached when falling (in units/frame)")] public float maxFallSpeed = 50f;
[Tooltip("Each frame while jumping, gravity will be multiplied by this amount in an attempt to 'cancel it' (= jump higher)")] public float gravityDivider = .6f;
[Tooltip("Adjust the friction of the slope")] public float slideFriction = 0.3f;
[Tooltip("Starting vertical movement when falling from a platform")] public float fallingVerticalMovement = -5f;
private float gravityContributionMultiplier = 0f; //The factor which determines how much gravity is affecting verticalMovement
private bool isJumping = false; //If true, a jump is in effect and the player is holding the jump button

private bool shouldSlide; // Should player slide?
private Vector3 inputVector; //Initial input horizontal movement (y == 0f)
private Vector3 movementVector; //Final movement vector
private const float ROTATION_TRESHOLD = .02f; // Used to prevent NaN result causing rotation in a non direction
private void Awake()
{

//-5f is a good value to make it so the player also sticks to uneven terrain/bumps without floating
if (!isJumping)
{
verticalMovement = -5f;
verticalMovement = fallingVerticalMovement;
gravityContributionMultiplier = 0f;
}
}

characterController.Move(movementVector * Time.deltaTime);
//Rotate to the movement direction
movementVector.y = 0f;
if (movementVector.sqrMagnitude >= .02f)
if (movementVector.sqrMagnitude >= ROTATION_TRESHOLD)
{
float targetRotation = Mathf.Atan2(movementVector.x, movementVector.z) * Mathf.Rad2Deg;
transform.eulerAngles = Vector3.up * Mathf.SmoothDampAngle(

6
UOP1_Project/Assets/Scripts/InputReader.cs


using System.Collections;
using System.Collections.Generic;
using System.Collections.Generic;
public class InputReader : MonoBehaviour, GameInput.IGameplayActions
[CreateAssetMenu( fileName="Input Reader" , menuName="Game/Input Reader" )]
public class InputReader : ScriptableObject, GameInput.IGameplayActions
{
public UnityAction jumpEvent;
public UnityAction jumpCanceledEvent;

14
UOP1_Project/Assets/Prefabs/Input Reader.asset


%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: 143f1e276019d54448855eb41708d190, type: 3}
m_Name: Input Reader
m_EditorClassIdentifier:

8
UOP1_Project/Assets/Prefabs/Input Reader.asset.meta


fileFormatVersion: 2
guid: 945ec0365077176418488737deed54be
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 0
userData:
assetBundleName:
assetBundleVariant:

82
UOP1_Project/Assets/Prefabs/SpawnSystem.prefab


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &2125786285293829329
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2125786285293829335}
- component: {fileID: 2125786285293829334}
m_Layer: 0
m_Name: SpawnSystem
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &2125786285293829335
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2125786285293829329}
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_Children:
- {fileID: 2125786286893897154}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &2125786285293829334
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2125786285293829329}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 65dde41d869e66e4d87103c43970a518, type: 3}
m_Name:
m_EditorClassIdentifier:
_defaultSpawnIndex: 0
_playerPrefab: {fileID: 211818859182309264, guid: 0fa393e1e37bc9e4e829c25a9452bcd3,
type: 3}
_inputReader: {fileID: 0}
_gameplayCamera: {fileID: 0}
_spawnLocations: []
--- !u!1 &2125786286893897213
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2125786286893897154}
m_Layer: 0
m_Name: Location 01
m_TagString: Untagged
m_Icon: {fileID: 3936346786652291628, guid: 0000000000000000d000000000000000, type: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &2125786286893897154
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2125786286893897213}
m_LocalRotation: {x: 0, y: 1, z: 0, w: 0}
m_LocalPosition: {x: -14.173, y: 0.69, z: -9.637}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 2125786285293829335}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0}

7
UOP1_Project/Assets/Prefabs/SpawnSystem.prefab.meta


fileFormatVersion: 2
guid: e978d53d440e0814086759404585ac32
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

79
UOP1_Project/Assets/Scripts/SpawnSystem.cs


using System;
using System.Linq;
using UnityEditor.PackageManager;
using UnityEngine;
using UnityEngine.Events;
public class SpawnSystem : MonoBehaviour
{
[Header("Settings")]
[SerializeField] private int _defaultSpawnIndex = 0;
[Header("Project References")]
[SerializeField] private Protagonist _playerPrefab = null;
[Header("Scene References")]
[SerializeField] private CameraManager _cameraManager;
[SerializeField] private Transform[] _spawnLocations;
void Awake()
{
try
{
Spawn(_defaultSpawnIndex);
}
catch (Exception e)
{
Debug.LogError($"[SpawnSystem] Failed to spawn player. {e.Message}");
}
}
void Reset()
{
AutoFill();
}
[ContextMenu("Attempt Auto Fill")]
private void AutoFill()
{
if(_cameraManager == null)
_cameraManager = FindObjectOfType<CameraManager>();
if (_spawnLocations == null || _spawnLocations.Length == 0)
_spawnLocations = transform.GetComponentsInChildren<Transform>(true)
.Where(t => t != this.transform)
.ToArray();
}
private void Spawn(int spawnIndex)
{
Transform spawnLocation = GetSpawnLocation(spawnIndex, _spawnLocations);
Protagonist playerInstance = InstantiatePlayer(_playerPrefab, spawnLocation, _cameraManager);
SetupCameras(playerInstance);
}
private Transform GetSpawnLocation(int index, Transform[] spawnLocations)
{
if (spawnLocations == null || spawnLocations.Length == 0)
throw new Exception("No spawn locations set.");
index = Mathf.Clamp(index, 0, spawnLocations.Length - 1);
return spawnLocations[index];
}
private Protagonist InstantiatePlayer(Protagonist playerPrefab, Transform spawnLocation, CameraManager _cameraManager)
{
if (playerPrefab == null)
throw new Exception("Player Prefab can't be null.");
Protagonist playerInstance = Instantiate(playerPrefab, spawnLocation.position, spawnLocation.rotation);
return playerInstance;
}
private void SetupCameras(Protagonist player)
{
player.gameplayCamera = _cameraManager.mainCamera.transform;
_cameraManager.SetupProtagonistVirtualCamera(player.transform);
}
}

11
UOP1_Project/Assets/Scripts/SpawnSystem.cs.meta


fileFormatVersion: 2
guid: 65dde41d869e66e4d87103c43970a518
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
正在加载...
取消
保存