add: EyeEnemy proper functionality

This commit is contained in:
KOSMOGOR
2025-04-25 14:47:48 +03:00
parent dc6707f2a9
commit 1b106e4e18
12 changed files with 249 additions and 8 deletions
+154
View File
@@ -0,0 +1,154 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &1562924000103655330
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2987293529414042391}
- component: {fileID: 3266538827119481022}
- component: {fileID: 3277822925141770390}
- component: {fileID: -8958570174584186611}
- component: {fileID: 8393546946202406891}
- component: {fileID: 9210136651646905660}
m_Layer: 0
m_Name: EnemyBullet
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &2987293529414042391
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1562924000103655330}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0.1, y: 0.1, z: 0.2}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &3266538827119481022
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1562924000103655330}
m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &3277822925141770390
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1562924000103655330}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: 7ced48a396ccf7045919ead8355ab8c6, 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_AdditionalVertexStreams: {fileID: 0}
--- !u!54 &-8958570174584186611
Rigidbody:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1562924000103655330}
serializedVersion: 4
m_Mass: 1
m_Drag: 0
m_AngularDrag: 0.05
m_CenterOfMass: {x: 0, y: 0, z: 0}
m_InertiaTensor: {x: 1, y: 1, z: 1}
m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_ImplicitCom: 1
m_ImplicitTensor: 1
m_UseGravity: 0
m_IsKinematic: 0
m_Interpolate: 0
m_Constraints: 0
m_CollisionDetection: 2
--- !u!135 &8393546946202406891
SphereCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1562924000103655330}
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 1
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 3
m_Radius: 0.5
m_Center: {x: 0, y: 0, z: 0}
--- !u!114 &9210136651646905660
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1562924000103655330}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 8d7536bbb5cbf394b8ec742b12cb0b87, type: 3}
m_Name:
m_EditorClassIdentifier:
speed: 5
damage: 1
timeToLive: 5
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 6a9f72b16f60d5047974eb5893b0326a
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+15 -3
View File
@@ -80,7 +80,7 @@ PrefabInstance:
addedObject: {fileID: 4157182199899525086}
- targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: 81be7b02df0db07479a8e1a9dd56f618, type: 3}
insertIndex: -1
addedObject: {fileID: -3280827978807638765}
addedObject: {fileID: 285488036582896095}
m_SourcePrefab: {fileID: 100100000, guid: 81be7b02df0db07479a8e1a9dd56f618, type: 3}
--- !u!1 &3602081654026665026 stripped
GameObject:
@@ -137,7 +137,7 @@ Rigidbody:
m_Interpolate: 0
m_Constraints: 112
m_CollisionDetection: 0
--- !u!114 &-3280827978807638765
--- !u!114 &285488036582896095
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
@@ -146,7 +146,19 @@ MonoBehaviour:
m_GameObject: {fileID: 3602081654026665026}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 46894d927b8e6654487b876457ca8974, type: 3}
m_Script: {fileID: 11500000, guid: 48cddee1e4d4837418957a7b4e6315c8, type: 3}
m_Name:
m_EditorClassIdentifier:
hp: 100
projectilePrefab: {fileID: 1562924000103655330, guid: 6a9f72b16f60d5047974eb5893b0326a, type: 3}
projectileSpawnPosition: {fileID: 8051388752729122526}
attackRange: 10
fireRate: 1
offsetDistance: 1.5
currentDelay: 0
target: {fileID: 0}
--- !u!4 &8051388752729122526 stripped
Transform:
m_CorrespondingSourceObject: {fileID: -3278615484307183667, guid: 81be7b02df0db07479a8e1a9dd56f618, type: 3}
m_PrefabInstance: {fileID: 4412476501240889619}
m_PrefabAsset: {fileID: 0}
+1 -1
View File
@@ -257,7 +257,7 @@ GameObject:
- component: {fileID: 3263211181679880648}
m_Layer: 0
m_Name: Player
m_TagString: Untagged
m_TagString: Player
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
+16
View File
@@ -136,6 +136,10 @@ PrefabInstance:
propertyPath: m_Name
value: Eye_Enemy1 (1)
objectReference: {fileID: 0}
- target: {fileID: 3602081654026665026, guid: 7ab59219438e4a241affd5e9441d9d9f, type: 3}
propertyPath: m_IsActive
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4230844338806302456, guid: 7ab59219438e4a241affd5e9441d9d9f, type: 3}
propertyPath: m_LocalPosition.x
value: 7
@@ -549,6 +553,10 @@ PrefabInstance:
propertyPath: m_Name
value: Eye_Enemy1 (3)
objectReference: {fileID: 0}
- target: {fileID: 3602081654026665026, guid: 7ab59219438e4a241affd5e9441d9d9f, type: 3}
propertyPath: m_IsActive
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4230844338806302456, guid: 7ab59219438e4a241affd5e9441d9d9f, type: 3}
propertyPath: m_LocalPosition.x
value: -7
@@ -779,6 +787,10 @@ PrefabInstance:
propertyPath: m_Name
value: Eye_Enemy1 (2)
objectReference: {fileID: 0}
- target: {fileID: 3602081654026665026, guid: 7ab59219438e4a241affd5e9441d9d9f, type: 3}
propertyPath: m_IsActive
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4230844338806302456, guid: 7ab59219438e4a241affd5e9441d9d9f, type: 3}
propertyPath: m_LocalPosition.x
value: 0
@@ -1441,6 +1453,10 @@ PrefabInstance:
propertyPath: m_Name
value: Eye_Enemy1
objectReference: {fileID: 0}
- target: {fileID: 3602081654026665026, guid: 7ab59219438e4a241affd5e9441d9d9f, type: 3}
propertyPath: m_IsActive
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4230844338806302456, guid: 7ab59219438e4a241affd5e9441d9d9f, type: 3}
propertyPath: m_LocalPosition.x
value: 0
@@ -0,0 +1,30 @@
using UnityEngine;
public class EnemyBulletProjectile : MonoBehaviour
{
public float speed = 1f;
public float damage = 20f;
public float timeToLive = 5f;
float currentTime = 0;
Rigidbody rb;
void Start() {
rb = GetComponent<Rigidbody>();
rb.linearVelocity = transform.forward * speed;
}
void Update() {
currentTime += Time.deltaTime;
if (currentTime >= timeToLive) Destroy(gameObject);
}
void OnTriggerEnter(Collider other) {
if (other.gameObject.CompareTag("Player")) {
Player player = other.GetComponent<Player>();
player.DealDamage(damage);
}
Destroy(gameObject);
}
}
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 8d7536bbb5cbf394b8ec742b12cb0b87
+21 -3
View File
@@ -2,13 +2,31 @@ using UnityEngine;
public class EyeEnemy : Enemy
{
public float _hp = 100;
public GameObject projectilePrefab;
public Transform projectileSpawnPosition;
public float attackRange = 10f;
public float fireRate = 1f;
public float offsetDistance = 1f;
[SerializeField] float currentDelay = 0;
[SerializeField] Player target;
void Start() {
hp = _hp;
target = FindFirstObjectByType<Player>();
}
void Update() {
if (fireRate != 0) currentDelay = Mathf.Clamp(currentDelay += Time.deltaTime, 0, 1 / fireRate);
Vector3 offset = (target.transform.position - projectileSpawnPosition.position).normalized * offsetDistance;
bool doShoot = false;
if (Physics.Raycast(projectileSpawnPosition.position + offset, offset, out RaycastHit hit, attackRange)) {
if (hit.transform.CompareTag("Player")) doShoot = true;
}
if (doShoot && (fireRate == 0 || currentDelay >= 1 / fireRate)) {
GameObject projectile = Instantiate(projectilePrefab, projectileSpawnPosition.position + offset, transform.rotation);
projectile.transform.LookAt(target.transform);
currentDelay = 0;
}
}
}
+1 -1
View File
@@ -4,7 +4,7 @@ using UnityEngine.SceneManagement;
public class DeployController : MonoBehaviour
{
public void Start() {
GameController.SetCursorState(true);
GameController.SetCursorState(false);
}
public void Deploy(string sceneName) {
+2
View File
@@ -7,9 +7,11 @@ public class GroundDetector : MonoBehaviour
public void OnTriggerEnter(Collider other) {
if ((1 << other.gameObject.layer & groundMask) != 0) onGround = true;
// onGround = true;
}
void OnTriggerStay(Collider other) { OnTriggerEnter(other); }
void OnTriggerExit(Collider other) {
if ((1 << other.gameObject.layer & groundMask) != 0) onGround = false;
// onGround = false;
}
}