feat: more combat tweaks

shuriken can now be thrown
jumping animtions
jumping animations timing
state machine changes
start of online integration
This commit is contained in:
Chris
2026-01-15 14:42:25 -05:00
parent a06784f7b6
commit 25b7fae339
45 changed files with 28662 additions and 250 deletions

View File

@@ -1,17 +1,115 @@

using System;
using System.Collections.Generic;
using System.Numerics;
using Unity.Collections.LowLevel.Unsafe;
using Unity.Services.Relay.Models;
using UnityEngine;
using Quaternion = UnityEngine.Quaternion;
using Vector3 = UnityEngine.Vector3;
namespace Reset.Items{
public class ShurikenActor : WeaponActor{
public GameObject bladeRing;
void Start(){
Debug.Log(GetType());
bladeRing = relatedObject.transform.GetChild(0).gameObject;
public Transform target;
private Vector3 targetPosition;
private Transform originalParent;
private Quaternion originalRotation;
private Vector3 originalPosition;
private Vector3 originalWorldPosition;
private float rotateSpeed;
private float rotateSpeedTarget;
private float rotationAcceleration;
void Awake(){
// Register Weapon Events
weaponEvents.Add("Set Target", SetTarget);
weaponEvents.Add("Fly To Target", FlyToTarget);
weaponEvents.Add("Fly To Hand", FlyToHand);
weaponEvents.Add("Return To Hand", ReturnToHand);
}
void SetTarget(){
Debug.Log($"{weaponVariables["target"]}, {weaponVariables["target"] as GameObject}");
target = (Transform)weaponVariables["target"];
}
void FlyToTarget(){
rotateSpeedTarget = 1200f;
rotationAcceleration = 200f;
RegisterWeaponVariable("state", "Flying To Target");
originalParent = relatedObject.transform.parent;
originalPosition = relatedObject.transform.localPosition;
originalRotation = relatedObject.transform.localRotation;
originalWorldPosition = relatedObject.transform.position;
relatedObject.transform.SetParent(null, true);
}
void FlyToHand(){
rotateSpeed = 3000f;
rotateSpeedTarget = 50f;
rotationAcceleration = 2f;
RegisterWeaponVariable("state", new string("Flying To Hand"));
}
void ReturnToHand(){
rotateSpeedTarget = 250f;
rotationAcceleration = 1f;
RegisterWeaponVariable("state", new string("Back In Hand"));
relatedObject.transform.SetParent(originalParent);
relatedObject.transform.localPosition = originalPosition;
relatedObject.transform.localRotation = originalRotation;
}
void Start(){
// Save refernce to the blade outer ring
bladeRing = relatedObject.transform.GetChild(0).gameObject;
}
void Update(){
bladeRing.transform.Rotate(Vector3.up * (180f * Time.deltaTime));
if (target) {
targetPosition = target.transform.position;
} else {
targetPosition = Vector3.forward * 5f;
}
RegisterWeaponVariable("position", transform.position);
rotateSpeed = Mathf.Lerp(rotateSpeed, rotateSpeedTarget, rotationAcceleration * Time.deltaTime);
bladeRing.transform.Rotate(Vector3.up * (rotateSpeed * Time.deltaTime));
Debug.Log((string)ReadWeaponVariable<string>("state"));
// Fly to the target
if ((string)ReadWeaponVariable<string>("state") == "Flying To Target") {
relatedObject.transform.position = Vector3.Lerp(relatedObject.transform.position, targetPosition, 5f * Time.deltaTime);
// When there, set next stage
if (Vector3.Distance(relatedObject.transform.position, targetPosition) < .5f) {
rotationAcceleration = 50f;
rotateSpeedTarget = 1200f;
RegisterWeaponVariable("state", new string("At Target"));
}
}
// Fly to the hand
if ((string)ReadWeaponVariable<string>("state") as string == "Flying To Hand") {
relatedObject.transform.position = Vector3.Lerp(relatedObject.transform.position, originalParent.transform.position, 5f * Time.deltaTime);
// When there, set as finished
if (Vector3.Distance(relatedObject.transform.position, originalParent.transform.position) < .5f) {
RegisterWeaponVariable("state", new string("At Hand"));
}
}
}
}
}