Assemblied created

This commit is contained in:
2023-06-02 00:30:58 -04:00
parent 3e1b55b036
commit 63039dbde2
99 changed files with 8302 additions and 1065 deletions

View File

@ -1,40 +1,43 @@
using UnityEngine;
public class BulletComponent : MonoBehaviour
namespace Item
{
[SerializeField] private float duration = 5f;
[SerializeField] private string type = "flare";
[SerializeField] private float damageRange = 20f;
[SerializeField] private float damageMagnitude = 1f;
private float existed;
private FlareRegister register;
public float DamageMagnitude => damageMagnitude;
public float DamageRange => damageRange;
// Start is called before the first frame update
private void Start()
public class BulletComponent : MonoBehaviour
{
register = FlareRegister.instance;
register.bullets.Add(this);
}
[SerializeField] private float duration = 5f;
// Update is called once per frame
private void Update()
{
}
[SerializeField] private string type = "flare";
private void FixedUpdate()
{
if (existed >= duration)
[SerializeField] private float damageRange = 20f;
[SerializeField] private float damageMagnitude = 1f;
private float existed;
private Item.FlareRegister register;
public float DamageMagnitude => damageMagnitude;
public float DamageRange => damageRange;
// Start is called before the first frame update
private void Start()
{
register.bullets.Remove(this);
Destroy(gameObject);
register = Item.FlareRegister.instance;
register.bullets.Add(this);
}
existed += Time.fixedDeltaTime;
// Update is called once per frame
private void Update()
{
}
private void FixedUpdate()
{
if (existed >= duration)
{
register.bullets.Remove(this);
Destroy(gameObject);
}
existed += Time.fixedDeltaTime;
}
}
}

View File

@ -1,45 +1,48 @@
using UnityEngine;
public class PistolAnimationAimAssist : MonoBehaviour
namespace Item
{
public Transform leftShoulder;
public Transform rightShoulder;
[SerializeField] private bool isEnabled;
private Animator anim;
private Vector3 lTarget;
private Vector3 rTarget;
// Start is called before the first frame update
private void Start()
public class PistolAnimationAimAssist : MonoBehaviour
{
lTarget = new Vector3(72.9f, 122.2f, -129.9f);
rTarget = new Vector3(82f, 11f, -88f);
anim = GetComponent<Animator>();
}
public Transform leftShoulder;
public Transform rightShoulder;
// Update is called once per frame
private void Update()
{
if (isEnabled)
[SerializeField] private bool isEnabled;
private Animator anim;
private Vector3 lTarget;
private Vector3 rTarget;
// Start is called before the first frame update
private void Start()
{
anim.StopPlayback();
leftShoulder.transform.eulerAngles = lTarget;
rightShoulder.transform.eulerAngles = rTarget;
print("Applying!");
anim.StartPlayback();
lTarget = new Vector3(72.9f, 122.2f, -129.9f);
rTarget = new Vector3(82f, 11f, -88f);
anim = GetComponent<Animator>();
}
// Update is called once per frame
private void Update()
{
if (isEnabled)
{
anim.StopPlayback();
leftShoulder.transform.eulerAngles = lTarget;
rightShoulder.transform.eulerAngles = rTarget;
print("Applying!");
anim.StartPlayback();
}
}
public void Enable()
{
isEnabled = true;
}
public void Disable()
{
isEnabled = false;
}
}
public void Enable()
{
isEnabled = true;
}
public void Disable()
{
isEnabled = false;
}
}

View File

@ -1,189 +1,192 @@
using UnityEngine;
using UnityEngine.VFX;
public class PistolComponent : MonoBehaviour
namespace Item
{
public enum AimMode
public class PistolComponent : MonoBehaviour
{
GUN,
MODIFIED,
CAMERA
}
public AimMode aimMode = AimMode.CAMERA;
[SerializeField] private Light targetingLight;
[SerializeField] private GameObject targetObjectPrefab;
[SerializeField] public GameObject projectilePrefab;
[SerializeField] public string projectileName;
[SerializeField] private Transform bulletSpawnPoint;
[SerializeField] private float firePower = 20f;
[SerializeField] private float maxProjectileDuration = 5f;
[SerializeField] private float maxTargetObjDistance = 15f;
[SerializeField] private VisualEffect shootEffect;
[SerializeField] private Light shootLight;
[SerializeField] private float shootLightDuration = 0.1f;
[SerializeField] private LayerMask ignoreLayers;
private bool hasCloseTarget;
private bool IsEnabled;
private GameObject targetObject;
private float timeSinceLightDuration;
public bool IsLightOn => targetingLight.gameObject.activeSelf;
//private Dictionary<int,float> projectiles = new Dictionary<int, float>();
// Start is called before the first frame update
private void Start()
{
}
// Update is called once per frame
private void Update()
{
timeSinceLightDuration += Time.deltaTime;
}
private void FixedUpdate()
{
if (shootLight.gameObject.activeSelf && timeSinceLightDuration > shootLightDuration)
shootLight.gameObject.SetActive(false);
if (aimMode == AimMode.CAMERA) targetObject.gameObject.transform.position = Player.PlayerAim.active.targetPosition;
if (IsEnabled && aimMode != AimMode.CAMERA)
public enum AimMode
{
var ray = new Ray(transform.position, transform.up);
RaycastHit hit;
if (Physics.Raycast(ray, out hit, 50, ignoreLayers))
{
var hitDist = Vector3.Distance(hit.point, transform.position);
if (hitDist < maxTargetObjDistance)
{
targetObject.gameObject.transform.position = hit.point;
GUN,
MODIFIED,
CAMERA
}
targetObject.gameObject.GetComponent<MeshRenderer>().materials[0]
.SetColor("_EmissiveColor", new Color(255, 0, 0));
//Track if we have a close target
hasCloseTarget = true;
public AimMode aimMode = AimMode.CAMERA;
[SerializeField] private Light targetingLight;
[SerializeField] private GameObject targetObjectPrefab;
[SerializeField] public GameObject projectilePrefab;
[SerializeField] public string projectileName;
[SerializeField] private Transform bulletSpawnPoint;
[SerializeField] private float firePower = 20f;
[SerializeField] private float maxProjectileDuration = 5f;
[SerializeField] private float maxTargetObjDistance = 15f;
[SerializeField] private VisualEffect shootEffect;
[SerializeField] private Light shootLight;
[SerializeField] private float shootLightDuration = 0.1f;
[SerializeField] private LayerMask ignoreLayers;
private bool hasCloseTarget;
private bool IsEnabled;
private GameObject targetObject;
private float timeSinceLightDuration;
public bool IsLightOn => targetingLight.gameObject.activeSelf;
//private Dictionary<int,float> projectiles = new Dictionary<int, float>();
// Start is called before the first frame update
private void Start()
{
}
// Update is called once per frame
private void Update()
{
timeSinceLightDuration += Time.deltaTime;
}
private void FixedUpdate()
{
if (shootLight.gameObject.activeSelf && timeSinceLightDuration > shootLightDuration)
shootLight.gameObject.SetActive(false);
if (aimMode == AimMode.CAMERA) targetObject.gameObject.transform.position = Player.PlayerAim.active.targetPosition;
if (IsEnabled && aimMode != AimMode.CAMERA)
{
var ray = new Ray(transform.position, transform.up);
RaycastHit hit;
if (Physics.Raycast(ray, out hit, 50, ignoreLayers))
{
var hitDist = Vector3.Distance(hit.point, transform.position);
if (hitDist < maxTargetObjDistance)
{
targetObject.gameObject.transform.position = hit.point;
targetObject.gameObject.GetComponent<MeshRenderer>().materials[0]
.SetColor("_EmissiveColor", new Color(255, 0, 0));
//Track if we have a close target
hasCloseTarget = true;
}
else
{
targetObject.gameObject.transform.position =
transform.position + ray.direction * maxTargetObjDistance;
targetObject.gameObject.GetComponent<MeshRenderer>().materials[0]
.SetColor("_EmissiveColor", new Color(255, 255, 255));
//Track if we have a close target
hasCloseTarget = false;
}
//float drop = CalculateDrop(this.bulletSpawnPoint.position, hit.point, this.transform.up * this.firePower);
//print(drop);
}
else
{
targetObject.gameObject.transform.position =
transform.position + ray.direction * maxTargetObjDistance;
targetObject.gameObject.transform.position = transform.position + ray.direction * maxTargetObjDistance;
targetObject.gameObject.GetComponent<MeshRenderer>().materials[0]
.SetColor("_EmissiveColor", new Color(255, 255, 255));
//Track if we have a close target
hasCloseTarget = false;
}
//float drop = CalculateDrop(this.bulletSpawnPoint.position, hit.point, this.transform.up * this.firePower);
//print(drop);
}
else
{
targetObject.gameObject.transform.position = transform.position + ray.direction * maxTargetObjDistance;
targetObject.gameObject.GetComponent<MeshRenderer>().materials[0]
.SetColor("_EmissiveColor", new Color(255, 255, 255));
hasCloseTarget = false;
}
}
}
private float CalculateDrop(Vector3 origin, Vector3 destination, Vector3 force)
{
// Calculate the initial velocity required to reach the destination.
var displacement = destination - origin;
var time = Mathf.Sqrt(2f * displacement.magnitude / Physics.gravity.magnitude);
var velocity = (displacement - 0.5f * Physics.gravity * time * time) / time + force;
// Calculate the height the object will reach during its flight.
var maxHeight = origin.y + velocity.y * time - 0.5f * Physics.gravity.y * time * time;
// Calculate the distance the object will drop during its flight.
var dropDistance = maxHeight - destination.y;
return dropDistance;
}
public void Fire()
{
Fire(!hasCloseTarget);
}
public void Fire(bool offsetWithTargetBall)
{
shootLightDuration = 0;
shootLight.gameObject.SetActive(true);
var projectile = Instantiate(projectilePrefab, bulletSpawnPoint);
projectile.transform.localPosition = Vector3.zero;
projectile.transform.localEulerAngles = Vector3.zero;
projectile.transform.localScale = Vector3.one;
var pRigid = projectile.GetComponent<Rigidbody>();
/*Modified targeting system
1. Since aim direction is vector from camera to ball (where player thinks its gonna go), raycast forward there, till hit. If no hit,
then set target distance to ~50.
2. Modify launch vector apply modified force
*/
var launchVector = pRigid.transform.up * firePower;
if (offsetWithTargetBall || aimMode == AimMode.MODIFIED)
private float CalculateDrop(Vector3 origin, Vector3 destination, Vector3 force)
{
var ballCamVector = targetObject.transform.position -
GetComponentInParent<Player.PlayerMovementController>().cam.transform.position;
var r = new Ray();
r.origin = targetObject.transform.position;
r.direction = ballCamVector.normalized;
RaycastHit hit;
if (Physics.Raycast(r, out hit, ignoreLayers))
// Calculate the initial velocity required to reach the destination.
var displacement = destination - origin;
var time = Mathf.Sqrt(2f * displacement.magnitude / Physics.gravity.magnitude);
var velocity = (displacement - 0.5f * Physics.gravity * time * time) / time + force;
// Calculate the height the object will reach during its flight.
var maxHeight = origin.y + velocity.y * time - 0.5f * Physics.gravity.y * time * time;
// Calculate the distance the object will drop during its flight.
var dropDistance = maxHeight - destination.y;
return dropDistance;
}
public void Fire()
{
Fire(!hasCloseTarget);
}
public void Fire(bool offsetWithTargetBall)
{
shootLightDuration = 0;
shootLight.gameObject.SetActive(true);
var projectile = Instantiate(projectilePrefab, bulletSpawnPoint);
projectile.transform.localPosition = Vector3.zero;
projectile.transform.localEulerAngles = Vector3.zero;
projectile.transform.localScale = Vector3.one;
var pRigid = projectile.GetComponent<Rigidbody>();
/*Modified targeting system
1. Since aim direction is vector from camera to ball (where player thinks its gonna go), raycast forward there, till hit. If no hit,
then set target distance to ~50.
2. Modify launch vector apply modified force
*/
var launchVector = pRigid.transform.up * firePower;
if (offsetWithTargetBall || aimMode == AimMode.MODIFIED)
{
launchVector = (hit.point - pRigid.transform.position).normalized;
var ballCamVector = targetObject.transform.position -
GetComponentInParent<Player.PlayerMovementController>().cam.transform.position;
var r = new Ray();
r.origin = targetObject.transform.position;
r.direction = ballCamVector.normalized;
RaycastHit hit;
if (Physics.Raycast(r, out hit, ignoreLayers))
{
launchVector = (hit.point - pRigid.transform.position).normalized;
launchVector *= firePower;
}
}
else if (aimMode == AimMode.CAMERA)
{
var target = Player.PlayerAim.active.targetPosition;
var lv = target - pRigid.transform.position;
launchVector = lv.normalized;
launchVector *= firePower;
}
pRigid.AddForce(launchVector, ForceMode.Impulse);
projectile.transform.parent = null;
shootEffect.Play();
}
else if (aimMode == AimMode.CAMERA)
public void Enable()
{
var target = Player.PlayerAim.active.targetPosition;
var lv = target - pRigid.transform.position;
launchVector = lv.normalized;
launchVector *= firePower;
IsEnabled = true;
if (targetObject == null) targetObject = Instantiate(targetObjectPrefab);
}
pRigid.AddForce(launchVector, ForceMode.Impulse);
projectile.transform.parent = null;
shootEffect.Play();
}
public void Enable()
{
IsEnabled = true;
if (targetObject == null) targetObject = Instantiate(targetObjectPrefab);
}
public void Disable()
{
IsEnabled = false;
if (targetObject != null) Destroy(targetObject);
}
public void Disable()
{
IsEnabled = false;
if (targetObject != null) Destroy(targetObject);
}
public void LightToggle()
{
targetingLight.gameObject.SetActive(!targetingLight.gameObject.activeSelf);
public void LightToggle()
{
targetingLight.gameObject.SetActive(!targetingLight.gameObject.activeSelf);
}
}
}