fixed strafing, added shooting effects, created a new testing level, enlarged enemies, updated bullet firing system

This commit is contained in:
2023-05-29 00:16:05 -04:00
parent 461a297e12
commit 77ba05e7dc
159 changed files with 126161 additions and 502 deletions

View File

@ -1,10 +1,14 @@
using System.Collections;
using System.Collections.Generic;
using Unity.Burst.CompilerServices;
using UnityEngine;
using UnityEngine.VFX;
public class PistolComponent : MonoBehaviour
{
public enum AimMode {GUN,MODIFIED,CAMERA};
public AimMode aimMode = AimMode.CAMERA;
[SerializeField]
private Light targetingLight;
@ -27,9 +31,17 @@ public class PistolComponent : MonoBehaviour
private float maxProjectileDuration = 5f;
[SerializeField]
private float maxTargetObjDistance = 15f;
[SerializeField]
private VisualEffect shootEffect;
[SerializeField]
private Light shootLight;
[SerializeField]
private float shootLightDuration = 0.1f;
private float timeSinceLightDuration = 0f;
private bool hasCloseTarget = false;
[SerializeField]
private LayerMask ignoreLayers;
//private Dictionary<int,float> projectiles = new Dictionary<int, float>();
@ -42,7 +54,7 @@ public class PistolComponent : MonoBehaviour
// Update is called once per frame
void Update()
{
timeSinceLightDuration += Time.deltaTime;
}
private float CalculateDrop(Vector3 origin,Vector3 destination,Vector3 force)
{
@ -61,12 +73,19 @@ public class PistolComponent : MonoBehaviour
}
private void FixedUpdate()
{
if (this.IsEnabled)
if (shootLight.gameObject.activeSelf&&timeSinceLightDuration>shootLightDuration)
{
shootLight.gameObject.SetActive(false);
}
if (aimMode==AimMode.CAMERA)
{
targetObject.gameObject.transform.position = PlayerAim.active.targetPosition;
}
if (this.IsEnabled&&aimMode!=AimMode.CAMERA)
{
Ray ray = new Ray(transform.position, transform.up);
RaycastHit hit;
if (Physics.Raycast(ray, out hit, 50))
if (Physics.Raycast(ray, out hit, 50,ignoreLayers))
{
float hitDist = Vector3.Distance(hit.point, transform.position);
@ -101,15 +120,17 @@ public class PistolComponent : MonoBehaviour
}
public void Fire()
{
Fire(!hasCloseTarget);
}
public void Fire(bool offsetWithTargetBall)
{
shootLightDuration = 0;
shootLight.gameObject.SetActive(true);
GameObject projectile = Instantiate(projectilePrefab, this.bulletSpawnPoint);
projectile.transform.localPosition = Vector3.zero;
projectile.transform.localEulerAngles = Vector3.zero;
@ -123,22 +144,32 @@ public class PistolComponent : MonoBehaviour
*/
Vector3 launchVector = pRigid.transform.up * this.firePower;
if(offsetWithTargetBall)
if(offsetWithTargetBall||aimMode==AimMode.MODIFIED)
{
Vector3 ballCamVector = targetObject.transform.position - this.GetComponentInParent<PlayerMovementController>().cam.transform.position;
Ray r = new Ray();
r.origin = targetObject.transform.position;
r.direction = ballCamVector.normalized;
RaycastHit hit;
if (Physics.Raycast(r,out hit))
if (Physics.Raycast(r,out hit,ignoreLayers))
{
launchVector = (hit.point - pRigid.transform.position).normalized;
launchVector *= this.firePower;
}
}
else if(aimMode==AimMode.CAMERA)
{
Vector3 target = PlayerAim.active.targetPosition;
Vector3 lv = target - pRigid.transform.position;
launchVector = lv.normalized;
launchVector*= this.firePower;
}
pRigid.AddForce(launchVector, ForceMode.Impulse);
projectile.transform.parent = null;
shootEffect.Play();
@ -160,6 +191,7 @@ public class PistolComponent : MonoBehaviour
Destroy(targetObject);
}
}
public void LightToggle() {
this.targetingLight.gameObject.SetActive(!this.targetingLight.gameObject.activeSelf);

View File

@ -5,6 +5,7 @@ using Cinemachine;
public class CameraShift : MonoBehaviour
{
public static CameraShift active;
[SerializeField]
private Camera childCam;
[SerializeField]
@ -44,6 +45,7 @@ public class CameraShift : MonoBehaviour
// Update is called once per frame
void Update()
{
active = this;
if (isCenter)
{
targetOffset= Vector3.zero;

View File

@ -0,0 +1,28 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerAim : MonoBehaviour
{
public static PlayerAim active;
public Vector3 targetPosition;
private Camera cam;
// Start is called before the first frame update
void Start()
{
active = this;
cam = GetComponent<Camera>();
}
// Update is called once per frame
void Update()
{
Ray r = new Ray(cam.transform.position,cam.transform.forward);
RaycastHit hit;
if(Physics.Raycast(r,out hit))
{
targetPosition = hit.point;
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: d0634141320a06b4f94b506dbed94499
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -31,7 +31,28 @@ public class PlayerAnimationController : MonoBehaviour
{
animController.SetFloat(runningSpeedParameter, movement.magnitude);
animController.SetBool(runningParameter,isMoving);
//animController.SetFloat(sideStepSpeedParameter, movement.x);
if (this.movement.IsAiming)
{
animController.SetFloat("StrafingSpeed", movement.x);
float dir = 0;
if (movement.x > 0)
{
dir = 1;
}else if (movement.x < 0)
{
dir = -1;
}
animController.SetFloat("StrafingDirection", dir);
}
else
{
animController.SetFloat("StrafingSpeed", 0);
animController.SetFloat("StrafingDirection", 1);
}
}
public void Animate(PlayerQuickAnimationType animation)
@ -64,7 +85,7 @@ public class PlayerAnimationController : MonoBehaviour
{
animController.SetBool("IsCarrying", interactionHandler.IsCarrying);
animController.SetBool("HasGun",interactionHandler.GunEnabled);
if (interactionHandler.GunEnabled&&!interactionHandler.isDead&&movement.AllowRotation)
{

View File

@ -249,7 +249,16 @@ public class PlayerInteractionHandler : MonoBehaviour
this.DisableFlashlight();
float aimAxis = Input.GetAxis("Aim");
if (aimAxis > 0.5f)
{
pistol.aimMode = PistolComponent.AimMode.CAMERA;
}
else
{
pistol.aimMode = PistolComponent.AimMode.MODIFIED;
}
}
else

View File

@ -34,6 +34,8 @@ public class PlayerMovementController : MonoBehaviour
[HideInInspector]
public bool AllowRotation = false;
[HideInInspector]
public bool IsAiming = false;
[SerializeField]
private NoiseVisibilitySettingsManager noiseSettings;
@ -80,9 +82,15 @@ public class PlayerMovementController : MonoBehaviour
movement += cam.transform.forward *y * Time.deltaTime * speed;
//movement += transform.forward * Mathf.Abs(x) * Time.deltaTime * speed;
movement += cam.transform.right * x * Time.deltaTime*speed;
movement += Vector3.down * 9.8f;
if (!IsAiming)
movement += cam.transform.right * x * Time.deltaTime * speed;
else
movement += cam.transform.right * x * Time.deltaTime * sideSpeed;
movement += Vector3.down*Time.deltaTime*9.8f;
ccontroller.Move(movement);
}
@ -110,21 +118,23 @@ public class PlayerMovementController : MonoBehaviour
void Update()
{
if(isDead) return;
AllowRotation = Input.GetMouseButton(1) || Input.GetAxis("Aim")>0.5f||IsRunning;
AllowRotation = IsAiming||IsRunning;
IsAiming = Input.GetMouseButton(1) || Input.GetAxis("Aim") > 0.5f;
GetMovementOld();
MovePlayer();
animcontroller.Animate(new Vector2(x, y), false,isRunning);
this.lookingDirectionVector = ((cameraController.Forward * y) + cameraController.Right * x).normalized;
if (isRunning && !Input.GetMouseButtonDown(1)||AllowRotation)
if (isRunning && !Input.GetMouseButtonDown(1) || AllowRotation)
{
if (AllowRotation && x == 0 && y == 0)
if (AllowRotation && x == 0 && y == 0 || IsAiming && PlayerInteractionHandler.instance.GunEnabled)
{
this.lookingDirectionVector = cameraController.Forward.normalized;
}
SlowLookAt(this.lookingDirectionVector);
}
@ -146,6 +156,7 @@ public class PlayerMovementController : MonoBehaviour
transform.rotation = Quaternion.Lerp(transform.rotation, toRotation, animatedRotationSpeed * Time.deltaTime);
}
public void PhysicalForceMove(Vector3 vector)
{