8 Commits
astek ... main

51 changed files with 930 additions and 249 deletions

2
.gitmodules vendored
View File

@@ -1,3 +1,3 @@
[submodule "Assets/RebootKit"]
path = Assets/RebootKit
url = http://100.64.0.6:3000/RR/RebootKit.git
url = https://git.chmurrka.eu/RR/RebootKit.git

View File

@@ -15,7 +15,7 @@ MonoBehaviour:
m_DefaultGroup: 64326db70156abe409df70a80bc62dc5
m_currentHash:
serializedVersion: 2
Hash: 00000000000000000000000000000000
Hash: 7161750430d6352c24e2b9d942610a3e
m_OptimizeCatalogSize: 0
m_BuildRemoteCatalog: 0
m_CatalogRequestsTimeout: 0

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 7ba665ddebe34f608f00db5d8107b685
timeCreated: 1761225260

View File

@@ -5,7 +5,7 @@ using UnityEngine;
using UnityEngine.AddressableAssets;
using Logger = RebootKit.Engine.Foundation.Logger;
namespace RebootReality.jelycho {
namespace RebootReality.jelycho.Actors {
public class ActorSpawner : Actor {
static readonly Logger s_Logger = new Logger(nameof(ActorSpawner));

View File

@@ -6,7 +6,7 @@ using UnityEngine;
using UnityEngine.Events;
using Logger = RebootKit.Engine.Foundation.Logger;
namespace RebootReality.jelycho {
namespace RebootReality.jelycho.Actors {
public class ButtonActor : Actor, IInteractable {
static readonly Logger s_Logger = new Logger(nameof(ButtonActor));

View File

@@ -0,0 +1,8 @@
namespace RebootReality.jelycho.Actors {
public interface IHasHealth {
ulong Health { get; }
ulong MaxHealth { get; }
bool IsAlive();
}
}

View File

@@ -1,4 +1,4 @@
namespace RebootReality.jelycho {
namespace RebootReality.jelycho.Actors {
public interface IInteractable {
void SetHighlight(bool highlight);
void Interact();

View File

@@ -4,6 +4,7 @@ using RebootKit.Engine.Main;
using RebootKit.Engine.Network;
using RebootKit.Engine.Simulation;
using RebootReality.jelycho.InfectedArea;
using RebootReality.jelycho.Main;
using Unity.Mathematics;
using UnityEngine;
using UnityEngine.AddressableAssets;

View File

@@ -1,5 +1,6 @@
using RebootKit.Engine.Network;
using RebootKit.Engine.Simulation;
using RebootReality.jelycho.Actors;
using RebootReality.jelycho.Enemies;
using UnityEngine;
@@ -24,7 +25,7 @@ namespace RebootReality.jelycho.Beacons {
}
}
public class MotherActor : Actor, IKillable {
public class MotherActor : Actor, IHasHealth {
MotherActorData m_ActorData = new MotherActorData();
[field: SerializeField] public Transform GutConnector { get; private set; }
@@ -35,16 +36,24 @@ namespace RebootReality.jelycho.Beacons {
protected override IActorData CreateActorData() {
return m_ActorData;
}
//
// @MARK: IKillable
//
// @MARK: IHasHealth
//
public ulong Health {
get {
return m_ActorData.Health;
}
private set {
m_ActorData.Health = value;
}
}
[field: SerializeField] public ulong MaxHealth { get; private set; }
public bool IsAlive() {
return m_ActorData.Health > 0;
}
public ulong OnHit(Actor attacker, ulong damage) {
return damage;
}
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: aaf9c8fc3fd047bfa82bdf2c1422c6be
timeCreated: 1761224582

View File

@@ -7,7 +7,7 @@ using Unity.Mathematics;
using UnityEngine;
using Logger = RebootKit.Engine.Foundation.Logger;
namespace RebootReality.jelycho {
namespace RebootReality.jelycho.Damage {
public class HitboxManagerActor : Actor {
static readonly Logger s_Logger = new Logger(nameof(HitboxManagerActor));
static readonly Collider[] s_CollidersBuffer = new Collider[512];
@@ -54,25 +54,6 @@ namespace RebootReality.jelycho {
hurtbox.ReceiveDamage(attacker, damage, p);
}
// if (s_CollidersBuffer[i].TryGetComponent(out IKillable killable)) {
// Actor killableActor = killable as Actor;
// if (killableActor == attacker) {
// continue;
// }
//
// if (killable is IHasHitFeedback hitFeedback) {
// float3 p = s_CollidersBuffer[i].ClosestPoint(origin);
// if (ShouldShowHitboxes()) {
// DbgDraw.Sphere(p, Quaternion.identity, Vector3.one * 0.1f, Color.magenta, m_HitboxDebugDuration);
// }
//
// hitFeedback.HitFeedback(p);
// }
//
// // @TODO: send command to server to hit an killable
// killable.OnHit(attacker, damage);
// }
}
}

View File

@@ -1,7 +1,7 @@
using RebootKit.Engine.Simulation;
using Unity.Mathematics;
namespace RebootReality.jelycho {
namespace RebootReality.jelycho.Damage {
public interface IHurtbox {
void ReceiveDamage(Actor attacker, ulong damage, float3 worldHitPos);
}

View File

@@ -1,10 +0,0 @@
using RebootKit.Engine.Simulation;
namespace RebootReality.jelycho.Enemies {
public interface IKillable {
bool IsAlive();
// @NOTE: Returns damage dealt
ulong OnHit(Actor attacker, ulong damage);
}
}

View File

@@ -2,6 +2,7 @@
using RebootKit.Engine.Extensions;
using RebootKit.Engine.Main;
using RebootKit.Engine.Simulation;
using RebootReality.jelycho.Enemies.Zombie;
using Unity.Collections;
using UnityEngine;
using UnityEngine.AddressableAssets;

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 72a9c46420c34ee594e3a68ac031a649
timeCreated: 1761227055

View File

@@ -6,15 +6,19 @@ using RebootKit.Engine.Extensions;
using RebootKit.Engine.Main;
using RebootKit.Engine.Network;
using RebootKit.Engine.Simulation;
using RebootReality.jelycho.Actors;
using RebootReality.jelycho.Beacons;
using RebootReality.jelycho.Main;
using RebootReality.jelycho.Player;
using TriInspector;
using Unity.Mathematics;
using UnityEngine;
using UnityEngine.AI;
using Logger = RebootKit.Engine.Foundation.Logger;
using Random = UnityEngine.Random;
using UnityEvent = UnityEngine.Events.UnityEvent;
namespace RebootReality.jelycho.Enemies {
namespace RebootReality.jelycho.Enemies.Zombie {
public class ZombieActorData : IActorData {
public void Serialize(NetworkBufferWriter writer) {
}
@@ -61,33 +65,61 @@ namespace RebootReality.jelycho.Enemies {
}
}
public class ZombieBlackboard {
public ZombieActor Self;
class ZombiePickVictim : IStrategy {
public BehaviourNode.Status Process(Actor target, float dt) {
if (target is not ZombieActor zombie) {
return BehaviourNode.Status.Failure;
}
Actor victim = zombie.FindNewVictim();
if (victim == null) {
return BehaviourNode.Status.Failure;
}
return BehaviourNode.Status.Success;
}
}
class ZombieGoToPlayer : IStrategy {
public BehaviourNode.Status Process(Actor target, float dt) {
if (target is not ZombieActor zombie) {
return BehaviourNode.Status.Failure;
}
if (!zombie.HasTravelDestination) {
float3 victimPos = zombie.Victim.transform.position;
float dstToVictimSq = math.distancesq(victimPos, zombie.transform.position);
if (dstToVictimSq < 1.0f) {
return BehaviourNode.Status.Success;
}
zombie.GoTo(victimPos);
return BehaviourNode.Status.Running;
}
return BehaviourNode.Status.Running;
}
}
[DeclareBoxGroup("Body parts")]
public class ZombieActor : Actor, IKillable {
[DeclareBoxGroup("Animations")]
public class ZombieActor : Actor, IHasHealth {
static readonly Logger s_Logger = new Logger(nameof(ZombieActor));
static readonly int s_MovementSpeedHash = Animator.StringToHash("MovementSpeed");
enum AIState {
Idle,
Dead,
AttackBase,
AttackCharacter,
PanicEscape,
Berserk
}
[SerializeField] AnimancerComponent m_Animancer;
[SerializeField] NavMeshAgent m_NavAgent;
public NavMeshAgent NavAgent {
get {
return m_NavAgent;
}
}
[SerializeField] Collider m_RootCollider;
[SerializeField] Rigidbody[] m_RagdollRigidbodies;
[SerializeField] float m_MaxAttackDistance = 1.0f;
[SerializeField] float m_MaxAttackDistance = 2.0f;
[SerializeField] float m_LoseInterestMinDistance = 10.0f;
[SerializeField] ulong m_BaseDamage = 10;
[SerializeField] float m_AttackDelay = 1.0f;
@@ -97,31 +129,61 @@ namespace RebootReality.jelycho.Enemies {
[SerializeField, Group("Body parts")] ZombieBodyPart m_RightArm;
[SerializeField, Group("Body parts")] ZombieBodyPart m_LeftLeg;
[SerializeField, Group("Body parts")] ZombieBodyPart m_RightLeg;
AIState m_State = AIState.Idle;
PlayerActor m_PlayerTarget;
float m_NextAttackTimer;
[SerializeField, Group("Animations")] TransitionAsset m_GroundLocomotion;
[SerializeField, Group("Animations")] StringAsset m_GroundLocomotionPropertyRight;
[SerializeField, Group("Animations")] StringAsset m_GroundLocomotionPropertyForward;
SmoothedVector2Parameter m_SmoothLocomotionDirection;
public UnityEvent died = new UnityEvent();
[SerializeField, Group("Animations")] AnimationClip[] m_AttackClips;
BehaviourTree m_BehaviourTree;
public enum MindState {
Normal,
RunAway,
Berserk
}
public bool IsRagdoll { get; private set; } = false;
public MindState Mind { get; private set; } = MindState.Normal;
public Actor Victim { get; private set; }
public bool HasTravelDestination { get; private set; }
public float3 TravelDestination { get; private set; }
public UnityEvent died = new UnityEvent();
//
// @MARK: Unity callbacks
//
void Awake() {
SetRagdollLocal(false);
SetRagdollLocal(IsRagdoll);
m_SmoothLocomotionDirection = new SmoothedVector2Parameter(m_Animancer,
m_GroundLocomotionPropertyRight,
m_GroundLocomotionPropertyForward,
0.1f);
m_Animancer.Play(m_GroundLocomotion);
m_BehaviourTree = new BehaviourTree("Zombie Behaviour");
var rootSelector = new Selector("Root");
m_BehaviourTree.AddChild(rootSelector);
var attackPlayerSequence = new Sequence("Attack Player",
() => m_PlayerTarget != null);
rootSelector.AddChild(attackPlayerSequence);
rootSelector.AddChild(CreateNormalSequence());
}
BehaviourNode CreateNormalSequence() {
var normalSequence = new Sequence("Normal", () => Mind == MindState.Normal);
normalSequence.AddChild(new Leaf("Pick Victim", new ZombiePickVictim()));
var attackPlayerSequence = new Sequence("Attack Player", IsVictimPlayer);
normalSequence.AddChild(attackPlayerSequence);
attackPlayerSequence.AddChild(new Leaf("Go to Player", new ZombieGoToPlayer()));
var attackMotherSequence = new Sequence("Attack Mother", IsVictimMother);
normalSequence.AddChild(attackMotherSequence);
return normalSequence;
}
//
@@ -134,8 +196,11 @@ namespace RebootReality.jelycho.Enemies {
return;
}
float velXZ = m_NavAgent.velocity.With(y: 0).magnitude;
// m_Animator.SetFloat(s_MovementSpeedHash, velXZ);
float3 vel = m_NavAgent.velocity;
float forwardVelocity = math.dot(m_NavAgent.transform.forward, vel);
float rightVelocity = math.dot(m_NavAgent.transform.right, vel);
m_SmoothLocomotionDirection.TargetValue = new Vector2(rightVelocity, forwardVelocity);
}
public override void OnServerTick(float deltaTime) {
@@ -146,107 +211,71 @@ namespace RebootReality.jelycho.Enemies {
return;
}
m_BehaviourTree.Process(deltaTime);
return;
if (HasTravelDestination) {
float3 pos = transform.position;
switch (m_State) {
case AIState.Idle: {
ServerTickIdle(deltaTime);
break;
}
case AIState.AttackBase: {
ServerTickAttackBase(deltaTime);
break;
}
case AIState.AttackCharacter: {
ServerTickAttackCharacter(deltaTime);
break;
}
case AIState.PanicEscape: {
break;
if (math.distancesq(pos, TravelDestination) <= 1.0f) {
HasTravelDestination = false;
m_NavAgent.isStopped = true;
}
}
case AIState.Berserk: {
ServerTickBerserk(deltaTime);
break;
}
}
m_BehaviourTree.Process(this, deltaTime);
}
//
// @MARK: Zombie
//
void ServerTickIdle(float dt) {
(PlayerActor playerActor, float distSqToPlayer) = FindClosestPlayerActor(transform.position);
if (playerActor == null || distSqToPlayer >= m_LoseInterestMinDistance * m_LoseInterestMinDistance) {
return;
public bool GoTo(float3 pos) {
if (!RR.IsServer()) {
s_Logger.Error("Only server can call GoTo");
return false;
}
m_State = AIState.AttackCharacter;
m_PlayerTarget = playerActor;
s_Logger.Info($"Found player actor to attack: {m_PlayerTarget}");
m_NavAgent.SetDestination(m_PlayerTarget.transform.position);
TravelDestination = pos;
HasTravelDestination = true;
m_NavAgent.isStopped = false;
return m_NavAgent.SetDestination(TravelDestination);
}
public bool IsVictimPlayer() {
return Victim is PlayerActor;
}
public bool IsVictimMother() {
return Victim is MotherActor;
}
void ServerTickAttackCharacter(float dt) {
if (m_PlayerTarget == null || !m_PlayerTarget.IsAlive()) {
SetIdleState();
return;
public Actor FindNewVictim() {
if (!RR.IsServer()) {
s_Logger.Error("Only server can call FindNewVictim");
return null;
}
float3 playerPos = m_PlayerTarget.transform.position;
float3 zombiePos = transform.position;
float distToPlayerSq = math.distancesq(playerPos, zombiePos);
if (distToPlayerSq >= m_LoseInterestMinDistance * m_LoseInterestMinDistance) {
SetIdleState();
return;
}
if (distToPlayerSq <= m_MaxAttackDistance * m_MaxAttackDistance) {
m_NextAttackTimer -= dt;
if (m_NextAttackTimer <= 0.0f) {
// m_Animator.CrossFade("Attack_0", 0.0f, 0);
m_NextAttackTimer = m_AttackDelay;
}
Victim = null;
if (!m_NavAgent.isStopped) {
m_NavAgent.isStopped = true;
}
return;
(PlayerActor playerActor, float distSqToPlayer) = FindClosestPlayerActor(transform.position);
if (playerActor != null && distSqToPlayer < m_LoseInterestMinDistance * m_LoseInterestMinDistance) {
Victim = playerActor;
return Victim;
}
if (RR.World.Context is WorldContext ctx) {
Victim = ctx.BaseManager.Mother;
return Victim;
}
float distFromDstToTargetSq = math.distancesq(playerPos, m_NavAgent.destination);
if (distFromDstToTargetSq > 1.0f) {
m_NavAgent.isStopped = false;
m_NavAgent.SetDestination(m_PlayerTarget.transform.position);
}
}
void ServerTickAttackBase(float dt) {
}
void ServerTickBerserk(float dt) {
return null;
}
void SetIdleState() {
m_PlayerTarget = null;
m_State = AIState.Idle;
public void PerformAttack() {
m_Animancer.Play(m_AttackClips.Random());
}
void Die() {
s_Logger.Info("Die");
EnableRagdoll();
m_NavAgent.enabled = false;
m_State = AIState.Dead;
died.Invoke();
}
@@ -281,7 +310,7 @@ namespace RebootReality.jelycho.Enemies {
}
protected override void OnActorEventClient(ActorEvent actorEvent) {
ZombieActorEvents zombieEvent = (ZombieActorEvents) actorEvent.EventID;
var zombieEvent = (ZombieActorEvents) actorEvent.EventID;
switch (zombieEvent) {
case ZombieActorEvents.EnableRagdoll: {
@@ -309,35 +338,14 @@ namespace RebootReality.jelycho.Enemies {
}
//
// @MARK: IKillable
// @MARK: IHasHealth
//
public ulong Health { get; private set; } = 100;
public ulong MaxHealth { get; private set; } = 100;
public bool IsAlive() {
return Health > 0;
}
public ulong OnHit(Actor attacker, ulong damage) {
if (!RR.IsServer()) {
s_Logger.Error("OnHit can only be called on the server.");
return 0;
}
if (!IsAlive()) {
return 0;
}
s_Logger.Info($"Hit: {damage}");
damage = math.min(damage, Health);
Health -= damage;
if (Health <= 0) {
Die();
return damage;
}
return damage;
}
//
// @MARK: damage?
@@ -348,7 +356,12 @@ namespace RebootReality.jelycho.Enemies {
}
}
public void ReceiveDamage(ulong damage, ZombieBodyPartType bodyPartType) {
public void ReceiveBodyPartDamage(ulong damage, ZombieBodyPartType bodyPartType) {
if (!RR.IsServer()) {
s_Logger.Error("ReceiveBodyPartDamage can only be called on the server.");
return;
}
if (!IsAlive()) {
return;
}
@@ -358,10 +371,26 @@ namespace RebootReality.jelycho.Enemies {
return;
}
bodyPart.HideParts();
bodyPart.bloodStreamParticles.Play();
bool isBodyPartDestroyed = Random.Range(0.0f, 1.0f) > 0.5f;
Die();
if (isBodyPartDestroyed) {
bodyPart.HideParts();
bodyPart.bloodStreamParticles.Play();
if (bodyPartType == ZombieBodyPartType.Head) {
damage = Health;
} else if (bodyPartType == ZombieBodyPartType.LeftLeg ||
bodyPartType == ZombieBodyPartType.RightLeg) {
}
}
damage = math.min(damage, Health);
Health -= damage;
if (Health <= 0) {
Die();
}
}
public bool HasBodyPart(ZombieBodyPartType bodyPart) {

View File

@@ -1,10 +1,12 @@
using RebootKit.Engine.Main;
using RebootKit.Engine.Simulation;
using RebootReality.jelycho.Damage;
using RebootReality.jelycho.Main;
using Unity.Mathematics;
using UnityEngine;
using UnityEngine.Assertions;
namespace RebootReality.jelycho.Enemies {
namespace RebootReality.jelycho.Enemies.Zombie {
public class ZombieHurtbox : MonoBehaviour, IHurtbox {
public ZombieActor owner;
[SerializeField] ZombieBodyPartType m_BodyPart = ZombieBodyPartType.Body;
@@ -18,7 +20,7 @@ namespace RebootReality.jelycho.Enemies {
return;
}
owner.ReceiveDamage(damage, m_BodyPart);
owner.ReceiveBodyPartDamage(damage, m_BodyPart);
if (RR.World.Context is WorldContext worldContext) {
worldContext.FeedbacksManager.SpawnBloodSplash(worldHitPos);

View File

@@ -1,5 +1,6 @@
using System.Collections.Generic;
using RebootKit.Engine.Main;
using RebootReality.jelycho.Main;
using Unity.Mathematics;
using UnityEngine;
using UnityEngine.Experimental.Rendering;

View File

@@ -1,6 +1,7 @@
using HighlightPlus;
using RebootKit.Engine.Network;
using RebootKit.Engine.Simulation;
using RebootReality.jelycho.Actors;
using UnityEngine;
using Logger = RebootKit.Engine.Foundation.Logger;

View File

@@ -1,5 +1,6 @@
using RebootKit.Engine.Main;
using RebootKit.Engine.Simulation;
using RebootReality.jelycho.Main;
using RebootReality.jelycho.Player;
using UnityEngine;
@@ -10,13 +11,13 @@ namespace RebootReality.jelycho.Items {
return;
}
PlayerActor playerActor = attacker as PlayerActor;
var playerActor = attacker as PlayerActor;
if (playerActor == null) {
return;
}
Vector3 attackPosition = playerActor.GetAttackPosition();
float attackRadius = 1.0f;
float attackRadius = 0.5f;
worldContext.HitboxManager.HitSphere(attackPosition, attackRadius, attacker, itemActor.Config.baseDamage);
}

View File

@@ -1,5 +1,6 @@
using RebootKit.Engine.Main;
using RebootKit.Engine.Simulation;
using RebootReality.jelycho.Main;
using RebootReality.jelycho.Player;
using UnityEngine;
using Logger = RebootKit.Engine.Foundation.Logger;

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: d9d82f5af5ffea248a3cac2b7ea4a4af
guid: aadf824e76564404c8d43d99803c60a1
DefaultImporter:
externalObjects: {}
userData:

View File

@@ -2,5 +2,7 @@
public static class GameConsts {
public const string k_AddComponentMenu = "Jelycho/";
public const string k_CreateAssetMenu = "Jelycho/";
public const string k_FPPActionMapName = "FPP";
}
}

View File

@@ -1,12 +1,13 @@
using RebootKit.Engine.Simulation;
using RebootReality.jelycho.Beacons;
using RebootReality.jelycho.Damage;
using RebootReality.jelycho.Enemies;
using RebootReality.jelycho.Feedbacks;
using RebootReality.jelycho.InfectedArea;
using RebootReality.jelycho.Ropes;
using UnityEngine;
namespace RebootReality.jelycho {
namespace RebootReality.jelycho.Main {
public class WorldContext : MonoBehaviour, IWorldContext {
[field: SerializeField] public Transform PlayerSpawnPoint { get; private set; }
[field: SerializeField] public RopesManager RopesManager { get; private set; }

View File

@@ -4,15 +4,17 @@ using RebootKit.Engine.Extensions;
using RebootKit.Engine.Main;
using RebootKit.Engine.Network;
using RebootKit.Engine.Simulation;
using RebootReality.jelycho.Actors;
using RebootReality.jelycho.Enemies;
using RebootReality.jelycho.Items;
using RebootReality.jelycho.Main;
using Unity.Collections;
using Unity.Mathematics;
using UnityEngine;
using Logger = RebootKit.Engine.Foundation.Logger;
namespace RebootReality.jelycho.Player {
public class PlayerActor : Actor, IKillable {
public class PlayerActor : Actor, IHasHealth {
static readonly Logger s_Logger = new Logger(nameof(PlayerActor));
[SerializeField] PlayerAnimator m_PlayerAnimator;
@@ -450,8 +452,10 @@ namespace RebootReality.jelycho.Player {
} else {
InterpolateActorState(deltaTime);
}
TickCharacterRotation(deltaTime);
}
void LateUpdate() {
TickCharacterRotation(Time.deltaTime);
}
protected override void OnActorCommandServer(ulong senderID, ActorCommand actorCommand) {
@@ -524,23 +528,6 @@ namespace RebootReality.jelycho.Player {
break;
}
case PlayerActorCommands.DealDamage: {
PlayerActorDealDamageCommand dealDamageCommand = new PlayerActorDealDamageCommand();
DataSerializationUtils.Deserialize(actorCommand.Data, ref dealDamageCommand);
Actor targetActor = RR.FindSpawnedActor(dealDamageCommand.TargetActorID);
if (targetActor == null) {
s_Logger.Error($"Target actor with ID {dealDamageCommand.TargetActorID} not found.");
break;
}
if (targetActor is IKillable killable) {
killable.OnHit(this, 100);
}
break;
}
}
}
@@ -671,18 +658,6 @@ namespace RebootReality.jelycho.Player {
}
}
public void DealDamage(IKillable target) {
if (target is Actor actor) {
var dealDamageCommand = new PlayerActorDealDamageCommand {
TargetActorID = actor.ActorID
};
SendActorCommand((byte) PlayerActorCommands.DealDamage,
ref dealDamageCommand);
} else {
s_Logger.Error($"Player can only deal damage to other actors!");
}
}
//
// @MARK: Remote
//
@@ -828,16 +803,15 @@ namespace RebootReality.jelycho.Player {
}
//
// @MARK: IKillable
// @MARK: IHasHealth
//
public ulong Health { get; private set; } = 100;
public ulong MaxHealth { get; private set; } = 100;
public bool IsAlive() {
return true;
}
public ulong OnHit(Actor attacker, ulong damage) {
return 0;
}
//
// @MARK: Common
//
@@ -845,7 +819,6 @@ namespace RebootReality.jelycho.Player {
float3 targetCharacterForward = math.normalize(LookDirection.With(y: 0.0f));
float3 currentCharacterForward = math.normalize(m_CharacterForwardTransform.forward.With(y: 0.0f));
// float angleDeg = Mathf.DeltaAngle(m_Camera.Yaw, m_Locomotion.YawRotation);
float angleRad = math.acos(math.clamp(math.dot(targetCharacterForward, currentCharacterForward) / (math.length(targetCharacterForward) * math.length(currentCharacterForward)), -1f, 1f));
float angleDeg = math.degrees(angleRad);
@@ -1054,8 +1027,7 @@ namespace RebootReality.jelycho.Player {
DropItem = 0x03,
EquipItem = 0x04,
SelectItemSlot = 0x05,
RequestHandsAnimation = 0x06,
DealDamage = 0x07
RequestHandsAnimation = 0x06
}
struct PlayerActorPickupItemCommand : IActorData {
@@ -1138,22 +1110,6 @@ namespace RebootReality.jelycho.Player {
}
}
struct PlayerActorDealDamageCommand : IActorData {
public ushort TargetActorID;
public int GetMaxBytes() {
return sizeof(ushort);
}
public void Serialize(NetworkBufferWriter writer) {
writer.Write(TargetActorID);
}
public void Deserialize(NetworkBufferReader reader) {
reader.Read(out TargetActorID);
}
}
// @MARK: Player Actor Events
enum PlayerActorEvents : byte {
None = 0x00,

View File

@@ -1,9 +1,12 @@
using System;
using RebootKit.Engine.Extensions;
using RebootKit.Engine.Foundation;
using RebootKit.Engine.Input;
using RebootKit.Engine.Main;
using RebootKit.Engine.Network;
using RebootKit.Engine.Simulation;
using RebootReality.jelycho.Actors;
using RebootReality.jelycho.Main;
using RebootReality.jelycho.Player.HUD;
using Unity.Mathematics;
using UnityEngine;
@@ -18,16 +21,24 @@ namespace RebootReality.jelycho.Player {
PlayerActor m_Actor;
PlayerHUD m_HUD;
InputState m_InputState;
IDisposable m_TargetInteractableLabelDisposable;
IInteractable m_Interactable;
void Awake() {
m_HUD = Instantiate(m_Config.playerHUDPrefab);
m_InputState = RR.Input.NewInputState("Player Controller");
m_InputState.HideCursor = true;
m_InputState.LockCursor = true;
m_InputState.AddActiveMap(GameConsts.k_FPPActionMapName);
}
void OnDestroy() {
m_InputState?.Dispose();
m_InputState = null;
if (m_HUD != null) {
Destroy(m_HUD.gameObject);
m_HUD = null;
@@ -39,12 +50,12 @@ namespace RebootReality.jelycho.Player {
}
void OnEnable() {
RR.Input.LockCursor();
m_InputState.IsActive = true;
RR.Input.EnableControls();
}
void OnDisable() {
RR.Input.UnlockCursor();
m_InputState.IsActive = false;
RR.Input.DisableControls();
}

View File

@@ -1,4 +1,5 @@
using RebootKit.Engine.Main;
using RebootReality.jelycho.Main;
using Unity.Mathematics;
using UnityEngine;
using UnityEngine.Assertions;

View File

@@ -1,5 +1,153 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &7002381419506676794
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2468028753576640433}
- component: {fileID: 5396192429513740654}
m_Layer: 8
m_Name: Trail
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 0
--- !u!4 &2468028753576640433
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7002381419506676794}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -0.032, y: 0.627, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 711236274234327174}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!96 &5396192429513740654
TrailRenderer:
serializedVersion: 3
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7002381419506676794}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 0
m_LightProbeUsage: 0
m_ReflectionProbeUsage: 0
m_RayTracingMode: 0
m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: bbf6c47920b8378488083e25f9ab31e1, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_Time: 1
m_PreviewTimeScale: 1
m_Parameters:
serializedVersion: 3
widthMultiplier: 0.74
widthCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 1
value: 0
inSlope: -3.2915306
outSlope: -3.2915306
tangentMode: 0
weightedMode: 0
inWeight: 0.0218094
outWeight: 0
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
colorGradient:
serializedVersion: 2
key0: {r: 1, g: 1, b: 1, a: 1}
key1: {r: 1, g: 1, b: 1, a: 1}
key2: {r: 0, g: 0, b: 0, a: 0}
key3: {r: 0, g: 0, b: 0, a: 0}
key4: {r: 0, g: 0, b: 0, a: 0}
key5: {r: 0, g: 0, b: 0, a: 0}
key6: {r: 0, g: 0, b: 0, a: 0}
key7: {r: 0, g: 0, b: 0, a: 0}
ctime0: 0
ctime1: 65535
ctime2: 0
ctime3: 0
ctime4: 0
ctime5: 0
ctime6: 0
ctime7: 0
atime0: 0
atime1: 65535
atime2: 0
atime3: 0
atime4: 0
atime5: 0
atime6: 0
atime7: 0
m_Mode: 0
m_ColorSpace: -1
m_NumColorKeys: 2
m_NumAlphaKeys: 2
numCornerVertices: 6
numCapVertices: 0
alignment: 1
textureMode: 0
textureScale: {x: 1, y: 1}
shadowBias: 0.5
generateLightingData: 0
m_MinVertexDistance: 0.1
m_MaskInteraction: 0
m_Autodestruct: 0
m_Emitting: 1
m_ApplyActiveColorSpace: 1
--- !u!1 &7390605608055178527
GameObject:
m_ObjectHideFlags: 0
@@ -34,6 +182,7 @@ Transform:
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 8232855175872471746}
- {fileID: 2468028753576640433}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &3623051023707969355
@@ -69,8 +218,8 @@ MonoBehaviour:
- actor:
m_AssetGUID: 50a5e87baaedf5b46ba52646e8e88b74
m_SubObjectName:
m_SubObjectGUID:
m_SubObjectType:
m_SubObjectGUID:
m_EditorAssetChanged: 0
slotName: dagger_left
handsAnimationClipsSets:

View File

@@ -87,6 +87,8 @@ MonoBehaviour:
- {fileID: 195185668620797367}
- {fileID: 7804274750609309327}
- {fileID: 516503892404828442}
- {fileID: 9055748677541019715}
- {fileID: 7745855554213630296}
colliders:
- {fileID: 5196034780342043746}
bloodStreamParticles: {fileID: 1496971979244116752}
@@ -113,6 +115,7 @@ MonoBehaviour:
wearables:
- {fileID: 4057421942970078161}
- {fileID: 9077155126279679235}
- {fileID: 1386487405498541073}
colliders:
- {fileID: 5959361679409008663}
- {fileID: 1107962127697433817}
@@ -122,10 +125,16 @@ MonoBehaviour:
wearables:
- {fileID: 2842147911703410086}
- {fileID: 3549243330475707168}
- {fileID: 3612120341523365289}
colliders:
- {fileID: 600210410026507738}
- {fileID: 6618653062145489106}
bloodStreamParticles: {fileID: 1270265462580972260}
m_GroundLocomotion: {fileID: 11400000, guid: 39e8c20c7fe505a488e7cdfc3da3b847, type: 2}
m_GroundLocomotionPropertyRight: {fileID: 11400000, guid: a078042616c18a14fb11cb422b08df12, type: 2}
m_GroundLocomotionPropertyForward: {fileID: 11400000, guid: 7b74808cded386840b654dee92400abd, type: 2}
m_AttackClips:
- {fileID: -203655887218126122, guid: da6de1de3c6a8fd4089dac405ac26f86, type: 3}
died:
m_PersistentCalls:
m_Calls: []
@@ -186,6 +195,10 @@ PrefabInstance:
propertyPath: m_Name
value: ps_blood_stream
objectReference: {fileID: 0}
- target: {fileID: 2645631219435715753, guid: e4708616b97e6384fbc6a5d749870ef0, type: 3}
propertyPath: m_Layer
value: 12
objectReference: {fileID: 0}
- target: {fileID: 8314467853670120486, guid: e4708616b97e6384fbc6a5d749870ef0, type: 3}
propertyPath: m_LocalPosition.x
value: 0
@@ -450,6 +463,10 @@ PrefabInstance:
serializedVersion: 3
m_TransformParent: {fileID: 3087783944934017836}
m_Modifications:
- target: {fileID: -9070493210130169274, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
propertyPath: m_Layer
value: 12
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
propertyPath: m_LocalPosition.x
value: 0
@@ -490,6 +507,10 @@ PrefabInstance:
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8006009767450596044, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
propertyPath: m_Layer
value: 12
objectReference: {fileID: 0}
- target: {fileID: -7547733204030175338, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
propertyPath: 'm_Materials.Array.data[0]'
value:
@@ -506,6 +527,10 @@ PrefabInstance:
propertyPath: 'm_Materials.Array.data[0]'
value:
objectReference: {fileID: 2100000, guid: dee771a2fd568e346a44028af6db8c4a, type: 2}
- target: {fileID: -6170625038081293824, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
propertyPath: m_Layer
value: 12
objectReference: {fileID: 0}
- target: {fileID: -5928052198791885581, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
propertyPath: 'm_Materials.Array.data[0]'
value:
@@ -514,10 +539,50 @@ PrefabInstance:
propertyPath: 'm_Materials.Array.data[0]'
value:
objectReference: {fileID: 2100000, guid: 6f6bf6c40b9130843890124806980318, type: 2}
- target: {fileID: -4728426434207774260, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
propertyPath: m_Layer
value: 12
objectReference: {fileID: 0}
- target: {fileID: -4332706925441422008, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
propertyPath: m_Layer
value: 12
objectReference: {fileID: 0}
- target: {fileID: -4223379080860796823, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
propertyPath: 'm_Materials.Array.data[0]'
value:
objectReference: {fileID: 2100000, guid: 6f6bf6c40b9130843890124806980318, type: 2}
- target: {fileID: -3478013746326755454, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
propertyPath: m_Layer
value: 12
objectReference: {fileID: 0}
- target: {fileID: -3214267034143217929, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
propertyPath: m_Layer
value: 12
objectReference: {fileID: 0}
- target: {fileID: -3086436065929644917, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
propertyPath: m_Layer
value: 12
objectReference: {fileID: 0}
- target: {fileID: -1781356600409242780, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
propertyPath: m_Layer
value: 12
objectReference: {fileID: 0}
- target: {fileID: -1425791611860619382, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
propertyPath: m_Layer
value: 12
objectReference: {fileID: 0}
- target: {fileID: -1268151995469589007, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
propertyPath: m_Layer
value: 12
objectReference: {fileID: 0}
- target: {fileID: -552831747908440785, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
propertyPath: m_Layer
value: 12
objectReference: {fileID: 0}
- target: {fileID: -290750445479886849, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
propertyPath: m_Layer
value: 12
objectReference: {fileID: 0}
- target: {fileID: 579163500693744052, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
propertyPath: 'm_Materials.Array.data[0]'
value:
@@ -534,10 +599,18 @@ PrefabInstance:
propertyPath: 'm_Materials.Array.data[0]'
value:
objectReference: {fileID: 2100000, guid: 6f6bf6c40b9130843890124806980318, type: 2}
- target: {fileID: 1711505207429034123, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
propertyPath: m_Layer
value: 12
objectReference: {fileID: 0}
- target: {fileID: 1751384141052031026, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
propertyPath: 'm_Materials.Array.data[0]'
value:
objectReference: {fileID: 2100000, guid: 08e19dab1a066fc4c837941529974811, type: 2}
- target: {fileID: 2586065998465600510, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
propertyPath: m_Layer
value: 12
objectReference: {fileID: 0}
- target: {fileID: 2674498840362988503, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
propertyPath: 'm_Materials.Array.data[0]'
value:
@@ -546,6 +619,26 @@ PrefabInstance:
propertyPath: 'm_Materials.Array.data[0]'
value:
objectReference: {fileID: 2100000, guid: 08e19dab1a066fc4c837941529974811, type: 2}
- target: {fileID: 3047284246813455858, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
propertyPath: m_Layer
value: 12
objectReference: {fileID: 0}
- target: {fileID: 3135921509060577837, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
propertyPath: m_Layer
value: 12
objectReference: {fileID: 0}
- target: {fileID: 3948933247560734027, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
propertyPath: m_Layer
value: 12
objectReference: {fileID: 0}
- target: {fileID: 4114030615378554161, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
propertyPath: m_Layer
value: 12
objectReference: {fileID: 0}
- target: {fileID: 4549111882529890269, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
propertyPath: m_Layer
value: 12
objectReference: {fileID: 0}
- target: {fileID: 4691356734749045086, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
propertyPath: 'm_Materials.Array.data[0]'
value:
@@ -554,6 +647,10 @@ PrefabInstance:
propertyPath: 'm_Materials.Array.data[0]'
value:
objectReference: {fileID: 2100000, guid: bd4a273039eeb24478a41c1ca3342080, type: 2}
- target: {fileID: 6514210125699187276, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
propertyPath: m_Layer
value: 12
objectReference: {fileID: 0}
- target: {fileID: 6548349598244766560, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
propertyPath: 'm_Materials.Array.data[0]'
value:
@@ -562,6 +659,14 @@ PrefabInstance:
propertyPath: 'm_Materials.Array.data[0]'
value:
objectReference: {fileID: 2100000, guid: dee771a2fd568e346a44028af6db8c4a, type: 2}
- target: {fileID: 7363479242261063072, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
propertyPath: m_Layer
value: 12
objectReference: {fileID: 0}
- target: {fileID: 7776229726456038893, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
propertyPath: m_Layer
value: 12
objectReference: {fileID: 0}
- target: {fileID: 7833282959318594594, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
propertyPath: 'm_Materials.Array.data[0]'
value:
@@ -578,6 +683,14 @@ PrefabInstance:
propertyPath: 'm_Materials.Array.data[0]'
value:
objectReference: {fileID: 2100000, guid: bd4a273039eeb24478a41c1ca3342080, type: 2}
- target: {fileID: 8817898888258712963, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
propertyPath: m_Layer
value: 12
objectReference: {fileID: 0}
- target: {fileID: 9037727976738196030, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
propertyPath: m_Layer
value: 12
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects:
@@ -618,6 +731,9 @@ PrefabInstance:
- targetCorrespondingSourceObject: {fileID: 3135921509060577837, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
insertIndex: -1
addedObject: {fileID: 9114647905794880330}
- targetCorrespondingSourceObject: {fileID: 3135921509060577837, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
insertIndex: -1
addedObject: {fileID: 8889524053042602330}
- targetCorrespondingSourceObject: {fileID: -6170625038081293824, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
insertIndex: -1
addedObject: {fileID: 1107962127697433817}
@@ -627,6 +743,9 @@ PrefabInstance:
- targetCorrespondingSourceObject: {fileID: -6170625038081293824, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
insertIndex: -1
addedObject: {fileID: 1540632195369085368}
- targetCorrespondingSourceObject: {fileID: -6170625038081293824, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
insertIndex: -1
addedObject: {fileID: 8696581383255721117}
- targetCorrespondingSourceObject: {fileID: -3086436065929644917, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
insertIndex: -1
addedObject: {fileID: 600210410026507738}
@@ -636,6 +755,9 @@ PrefabInstance:
- targetCorrespondingSourceObject: {fileID: -3086436065929644917, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
insertIndex: -1
addedObject: {fileID: 726057557378094293}
- targetCorrespondingSourceObject: {fileID: -3086436065929644917, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
insertIndex: -1
addedObject: {fileID: 711757849574573574}
- targetCorrespondingSourceObject: {fileID: -4332706925441422008, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
insertIndex: -1
addedObject: {fileID: 6618653062145489106}
@@ -645,6 +767,9 @@ PrefabInstance:
- targetCorrespondingSourceObject: {fileID: -4332706925441422008, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
insertIndex: -1
addedObject: {fileID: 8617324969592010863}
- targetCorrespondingSourceObject: {fileID: -4332706925441422008, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
insertIndex: -1
addedObject: {fileID: 1929018140768363926}
- targetCorrespondingSourceObject: {fileID: -203856693384778745, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
insertIndex: -1
addedObject: {fileID: 1413923487375971647}
@@ -666,6 +791,9 @@ PrefabInstance:
- targetCorrespondingSourceObject: {fileID: 8817898888258712963, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
insertIndex: -1
addedObject: {fileID: 7650472635330070799}
- targetCorrespondingSourceObject: {fileID: 8817898888258712963, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
insertIndex: -1
addedObject: {fileID: 8763777495105657203}
- targetCorrespondingSourceObject: {fileID: 3948933247560734027, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
insertIndex: -1
addedObject: {fileID: 8675953056952567188}
@@ -675,6 +803,9 @@ PrefabInstance:
- targetCorrespondingSourceObject: {fileID: 3948933247560734027, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
insertIndex: -1
addedObject: {fileID: 2005653223311132657}
- targetCorrespondingSourceObject: {fileID: 3948933247560734027, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
insertIndex: -1
addedObject: {fileID: 3208180709493702790}
- targetCorrespondingSourceObject: {fileID: -1781356600409242780, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
insertIndex: -1
addedObject: {fileID: 5196034780342043746}
@@ -696,6 +827,9 @@ PrefabInstance:
- targetCorrespondingSourceObject: {fileID: -9070493210130169274, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
insertIndex: -1
addedObject: {fileID: 1647824546989841962}
- targetCorrespondingSourceObject: {fileID: -9070493210130169274, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
insertIndex: -1
addedObject: {fileID: 7123774486743823049}
- targetCorrespondingSourceObject: {fileID: -290750445479886849, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
insertIndex: -1
addedObject: {fileID: 4929436638533926073}
@@ -705,6 +839,9 @@ PrefabInstance:
- targetCorrespondingSourceObject: {fileID: -290750445479886849, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
insertIndex: -1
addedObject: {fileID: 1847148280696077802}
- targetCorrespondingSourceObject: {fileID: -290750445479886849, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
insertIndex: -1
addedObject: {fileID: 7150118618737326427}
m_SourcePrefab: {fileID: 100100000, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
--- !u!4 &195185668620797367 stripped
Transform:
@@ -812,6 +949,20 @@ CharacterJoint:
m_EnablePreprocessing: 0
m_MassScale: 1
m_ConnectedMassScale: 1
--- !u!114 &1929018140768363926
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 318341321164162482}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 37d2b8f1679f41288194769e98584e0e, type: 3}
m_Name:
m_EditorClassIdentifier:
owner: {fileID: 8352071028351746831}
m_BodyPart: 5
--- !u!4 &387768722951651117 stripped
Transform:
m_CorrespondingSourceObject: {fileID: -4407763831008536617, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
@@ -923,6 +1074,25 @@ CharacterJoint:
m_EnablePreprocessing: 0
m_MassScale: 1
m_ConnectedMassScale: 1
--- !u!114 &711757849574573574
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1341823646622997617}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 37d2b8f1679f41288194769e98584e0e, type: 3}
m_Name:
m_EditorClassIdentifier:
owner: {fileID: 8352071028351746831}
m_BodyPart: 5
--- !u!4 &1386487405498541073 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 6091137516116298987, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
m_PrefabInstance: {fileID: 5167277762949540090}
m_PrefabAsset: {fileID: 0}
--- !u!4 &1508813012558952447 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 6000407479487422213, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
@@ -1086,6 +1256,11 @@ Transform:
m_CorrespondingSourceObject: {fileID: 8571662625946739674, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
m_PrefabInstance: {fileID: 5167277762949540090}
m_PrefabAsset: {fileID: 0}
--- !u!4 &3612120341523365289 stripped
Transform:
m_CorrespondingSourceObject: {fileID: -750676241868679853, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
m_PrefabInstance: {fileID: 5167277762949540090}
m_PrefabAsset: {fileID: 0}
--- !u!4 &3810518212273745183 stripped
Transform:
m_CorrespondingSourceObject: {fileID: -912975496661547547, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
@@ -1315,6 +1490,20 @@ CharacterJoint:
m_EnablePreprocessing: 0
m_MassScale: 1
m_ConnectedMassScale: 1
--- !u!114 &7150118618737326427
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4342270201220536069}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 37d2b8f1679f41288194769e98584e0e, type: 3}
m_Name:
m_EditorClassIdentifier:
owner: {fileID: 8352071028351746831}
m_BodyPart: 3
--- !u!1 &4461558626407488889 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 8817898888258712963, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
@@ -1416,6 +1605,20 @@ CharacterJoint:
m_EnablePreprocessing: 0
m_MassScale: 1
m_ConnectedMassScale: 1
--- !u!114 &8763777495105657203
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4461558626407488889}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 37d2b8f1679f41288194769e98584e0e, type: 3}
m_Name:
m_EditorClassIdentifier:
owner: {fileID: 8352071028351746831}
m_BodyPart: 2
--- !u!4 &4629527527371345681 stripped
Transform:
m_CorrespondingSourceObject: {fileID: -8679921383154817045, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
@@ -1527,6 +1730,20 @@ CharacterJoint:
m_EnablePreprocessing: 0
m_MassScale: 1
m_ConnectedMassScale: 1
--- !u!114 &7123774486743823049
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5020099358574029500}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 37d2b8f1679f41288194769e98584e0e, type: 3}
m_Name:
m_EditorClassIdentifier:
owner: {fileID: 8352071028351746831}
m_BodyPart: 3
--- !u!1 &5237927313291425520 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 1082271958561512970, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
@@ -1637,6 +1854,11 @@ Transform:
m_CorrespondingSourceObject: {fileID: 2559285840627121667, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
m_PrefabInstance: {fileID: 5167277762949540090}
m_PrefabAsset: {fileID: 0}
--- !u!4 &7745855554213630296 stripped
Transform:
m_CorrespondingSourceObject: {fileID: -5995675212371052126, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
m_PrefabInstance: {fileID: 5167277762949540090}
m_PrefabAsset: {fileID: 0}
--- !u!1 &7795973122874794711 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 3135921509060577837, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
@@ -1738,6 +1960,20 @@ CharacterJoint:
m_EnablePreprocessing: 0
m_MassScale: 1
m_ConnectedMassScale: 1
--- !u!114 &8889524053042602330
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7795973122874794711}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 37d2b8f1679f41288194769e98584e0e, type: 3}
m_Name:
m_EditorClassIdentifier:
owner: {fileID: 8352071028351746831}
m_BodyPart: 4
--- !u!4 &7804274750609309327 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 3169268832049026677, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
@@ -1844,6 +2080,20 @@ CharacterJoint:
m_EnablePreprocessing: 0
m_MassScale: 1
m_ConnectedMassScale: 1
--- !u!114 &8696581383255721117
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7919670688253307642}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 37d2b8f1679f41288194769e98584e0e, type: 3}
m_Name:
m_EditorClassIdentifier:
owner: {fileID: 8352071028351746831}
m_BodyPart: 4
--- !u!1 &8176485658650983857 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 3948933247560734027, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
@@ -1945,11 +2195,30 @@ CharacterJoint:
m_EnablePreprocessing: 0
m_MassScale: 1
m_ConnectedMassScale: 1
--- !u!114 &3208180709493702790
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8176485658650983857}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 37d2b8f1679f41288194769e98584e0e, type: 3}
m_Name:
m_EditorClassIdentifier:
owner: {fileID: 8352071028351746831}
m_BodyPart: 2
--- !u!4 &8811467099555359601 stripped
Transform:
m_CorrespondingSourceObject: {fileID: -4756569648371596405, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
m_PrefabInstance: {fileID: 5167277762949540090}
m_PrefabAsset: {fileID: 0}
--- !u!4 &9055748677541019715 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 4186554135785121977, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}
m_PrefabInstance: {fileID: 5167277762949540090}
m_PrefabAsset: {fileID: 0}
--- !u!4 &9077155126279679235 stripped
Transform:
m_CorrespondingSourceObject: {fileID: -5022265917205789191, guid: d2e957dad22ca1f4fae5e5e9fd8170c3, type: 3}

View File

@@ -0,0 +1,15 @@
%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: 4d26ada6b8b155b4cbf61e26d6fc9a06, type: 3}
m_Name: param_zombie_ground_locomotion_forward
m_EditorClassIdentifier:
_EditorComment:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 7b74808cded386840b654dee92400abd
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,15 @@
%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: 4d26ada6b8b155b4cbf61e26d6fc9a06, type: 3}
m_Name: param_zombie_ground_locomotion_right
m_EditorClassIdentifier:
_EditorComment:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: a078042616c18a14fb11cb422b08df12
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,46 @@
%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: c5a8877f26e7a6a43aaf06fade1a064a, type: 3}
m_Name: zombie_ground_locomotion
m_EditorClassIdentifier:
_Transition:
rid: 2723988711188463719
references:
version: 2
RefIds:
- rid: 2723988711188463719
type: {class: MixerTransition2D, ns: Animancer, asm: Kybernetik.Animancer}
data:
_FadeDuration: 0.25
_Speed: 1
_Events:
_NormalizedTimes: []
_Callbacks: []
_Names: []
_Animations:
- {fileID: -203655887218126122, guid: 7cb1b14715c58f44eb90c93bdd4a6505, type: 3}
- {fileID: -203655887218126122, guid: cc1877bf70cb4ca4da39d89d9a461c34, type: 3}
- {fileID: -203655887218126122, guid: cc1877bf70cb4ca4da39d89d9a461c34, type: 3}
- {fileID: -203655887218126122, guid: cc1877bf70cb4ca4da39d89d9a461c34, type: 3}
- {fileID: -203655887218126122, guid: cc1877bf70cb4ca4da39d89d9a461c34, type: 3}
_Speeds: []
_SynchronizeChildren:
_Thresholds:
- {x: 0, y: 0}
- {x: 0, y: 1}
- {x: 0, y: -1}
- {x: 1, y: 0}
- {x: -1, y: 0}
_DefaultParameter: {x: 0, y: 0}
_Type: 0
_ParameterNameX: {fileID: 11400000, guid: a078042616c18a14fb11cb422b08df12, type: 2}
_ParameterNameY: {fileID: 11400000, guid: 7b74808cded386840b654dee92400abd, type: 2}

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 39e8c20c7fe505a488e7cdfc3da3b847
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,157 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &-3534035237265524349
MonoBehaviour:
m_ObjectHideFlags: 11
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: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
m_Name:
m_EditorClassIdentifier:
version: 10
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: m_weapon_trail
m_Shader: {fileID: 4800000, guid: 8516d7a69675844a7a0b7095af7c46af, type: 3}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords: []
m_InvalidKeywords:
- _FLIPBOOKBLENDING_OFF
m_LightmapFlags: 0
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap:
RenderType: Opaque
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BaseMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _SpecGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- unity_Lightmaps:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- unity_LightmapsInd:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- unity_ShadowMasks:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _AddPrecomputedVelocity: 0
- _AlphaClip: 0
- _AlphaToMask: 0
- _Blend: 0
- _BlendModePreserveSpecular: 1
- _BlendOp: 0
- _BumpScale: 1
- _CameraFadingEnabled: 0
- _CameraFarFadeDistance: 2
- _CameraNearFadeDistance: 1
- _ClearCoatMask: 0
- _ClearCoatSmoothness: 0
- _ColorMode: 0
- _Cull: 2
- _Cutoff: 0.5
- _DetailAlbedoMapScale: 1
- _DetailNormalMapScale: 1
- _DistortionBlend: 0.5
- _DistortionEnabled: 0
- _DistortionStrength: 1
- _DistortionStrengthScaled: 0
- _DstBlend: 0
- _DstBlendAlpha: 0
- _EmissionEnabled: 0
- _EnvironmentReflections: 1
- _FlipbookBlending: 0
- _FlipbookMode: 0
- _GlossMapScale: 0
- _Glossiness: 0
- _GlossyReflections: 0
- _LightingEnabled: 1
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.005
- _QueueOffset: 0
- _ReceiveShadows: 1
- _Smoothness: 0.5
- _SmoothnessSource: 0
- _SmoothnessTextureChannel: 0
- _SoftParticlesEnabled: 0
- _SoftParticlesFarFadeDistance: 1
- _SoftParticlesNearFadeDistance: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _SrcBlendAlpha: 1
- _Surface: 0
- _WorkflowMode: 1
- _ZWrite: 1
m_Colors:
- _BaseColor: {r: 1, g: 1, b: 1, a: 1}
- _BaseColorAddSubDiff: {r: 0, g: 0, b: 0, a: 0}
- _CameraFadeParams: {r: 0, g: Infinity, b: 0, a: 0}
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _SoftParticleFadeParams: {r: 0, g: 0, b: 0, a: 0}
- _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
m_BuildTextureStacks: []
m_AllowLocking: 1

View File

@@ -1,7 +1,8 @@
fileFormatVersion: 2
guid: 853091bba666d1541bcf46287f5d8b0a
DefaultImporter:
guid: bbf6c47920b8378488083e25f9ab31e1
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1024,7 +1024,7 @@ MonoBehaviour:
FieldOfView: 70
OrthographicSize: 5
NearClipPlane: 0.12
FarClipPlane: 500
FarClipPlane: 1000
Dutch: 0
ModeOverride: 0
PhysicalProperties:
@@ -1185,7 +1185,7 @@ AudioSource:
m_Enabled: 1
serializedVersion: 4
OutputAudioMixerGroup: {fileID: -7246246608557242452, guid: 95a6b2fae6891e9428abd9f1d02ef54d, type: 2}
m_audioClip: {fileID: 8300000, guid: 5716155335402be4393584059b4ff19d, type: 3}
m_audioClip: {fileID: 0}
m_Resource: {fileID: 8300000, guid: 5716155335402be4393584059b4ff19d, type: 3}
m_PlayOnAwake: 0
m_Volume: 1

View File

@@ -10,7 +10,7 @@ MonoBehaviour:
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: c5a8877f26e7a6a43aaf06fade1a064a, type: 3}
m_Name: param_ground_locomotion
m_Name: ground_locomotion
m_EditorClassIdentifier:
_Transition:
rid: 2723988420483612950

View File

@@ -89,7 +89,7 @@
{
"type": "System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089",
"key": "ShapeBuilder.ActiveShapeIndex",
"value": "{\"m_Value\":1}"
"value": "{\"m_Value\":6}"
},
{
"type": "UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
@@ -99,7 +99,7 @@
{
"type": "UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
"key": "ShapeBuilder.LastSize.Plane",
"value": "{\"m_Value\":{\"x\":384.8273010253906,\"y\":0.0,\"z\":-189.3860626220703}}"
"value": "{\"m_Value\":{\"x\":-70.788330078125,\"y\":0.0,\"z\":35.4305419921875}}"
},
{
"type": "UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",