Browse Source

add: bullet and states

master
KerelOlivier 3 years ago
parent
commit
78771115b6
  1. 78
      Assets/Scenes/test.unity
  2. 4
      Assets/Scripts/Bullet.cs
  3. 8
      Assets/Scripts/Enemies.meta
  4. 28
      Assets/Scripts/Enemies/BaseEnemy.cs
  5. 3
      Assets/Scripts/Enemies/BaseEnemy.cs.meta
  6. 30
      Assets/Scripts/Enemies/Enemy.cs
  7. 11
      Assets/Scripts/Enemies/Enemy.cs.meta
  8. 3
      Assets/Scripts/Enemies/States.meta
  9. 27
      Assets/Scripts/Enemies/States/AttackState.cs
  10. 3
      Assets/Scripts/Enemies/States/AttackState.cs.meta
  11. 26
      Assets/Scripts/Enemies/States/DieState.cs
  12. 3
      Assets/Scripts/Enemies/States/DieState.cs.meta
  13. 27
      Assets/Scripts/Enemies/States/FollowState.cs
  14. 3
      Assets/Scripts/Enemies/States/FollowState.cs.meta
  15. 9
      Assets/Scripts/Enemies/States/IState.cs
  16. 11
      Assets/Scripts/Enemies/States/IState.cs.meta
  17. 28
      Assets/Scripts/Enemies/States/IdleState.cs
  18. 3
      Assets/Scripts/Enemies/States/IdleState.cs.meta
  19. 27
      Assets/Scripts/Enemies/States/PathState.cs
  20. 3
      Assets/Scripts/Enemies/States/PathState.cs.meta
  21. 28
      Assets/Scripts/Enemies/States/TargetingState.cs
  22. 3
      Assets/Scripts/Enemies/States/TargetingState.cs.meta
  23. 13
      Assets/Scripts/PlayerController.cs

78
Assets/Scenes/test.unity

@ -152,9 +152,10 @@ Transform:
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 394882245} m_GameObject: {fileID: 394882245}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 2, z: 0} m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: [] m_Children:
- {fileID: 1731621445}
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_RootOrder: 1 m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@ -308,6 +309,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: ff7058e4b6f609474b877ecc3d8c9e62, type: 3} m_Script: {fileID: 11500000, guid: ff7058e4b6f609474b877ecc3d8c9e62, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
nuzzleFlash: {fileID: 1731621446}
bulletPrefab: {fileID: 409730934181383827, guid: ccfd7dba07a17d1c0845ca0004f9c5fe, type: 3} bulletPrefab: {fileID: 409730934181383827, guid: ccfd7dba07a17d1c0845ca0004f9c5fe, type: 3}
--- !u!1 &519420028 --- !u!1 &519420028
GameObject: GameObject:
@ -542,6 +544,78 @@ Transform:
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_RootOrder: 3 m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1731621444
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1731621445}
- component: {fileID: 1731621446}
m_Layer: 0
m_Name: Point Light 2D
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1731621445
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1731621444}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0.5, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 394882246}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1731621446
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1731621444}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 073797afb82c5a1438f328866b10b3f0, type: 3}
m_Name:
m_EditorClassIdentifier:
m_LightType: 3
m_BlendStyleIndex: 0
m_FalloffIntensity: 0.5
m_Color: {r: 1, g: 0.3056656, b: 0, a: 1}
m_Intensity: 0
m_LightVolumeOpacity: 0
m_ApplyToSortingLayers: 00000000
m_LightCookieSprite: {fileID: 0}
m_UseNormalMap: 0
m_LightOrder: 0
m_AlphaBlendOnOverlap: 0
m_ShadowIntensity: 0
m_ShadowVolumeIntensity: 0
m_PointLightInnerAngle: 360
m_PointLightOuterAngle: 360
m_PointLightInnerRadius: 0
m_PointLightOuterRadius: 0.7
m_PointLightDistance: 3
m_PointLightQuality: 1
m_ShapeLightParametricSides: 5
m_ShapeLightParametricAngleOffset: 0
m_ShapeLightParametricRadius: 1
m_ShapeLightFalloffSize: 0.5
m_ShapeLightFalloffOffset: {x: 0, y: 0}
m_ShapePath:
- {x: -0.5, y: -0.5, z: 0}
- {x: 0.5, y: -0.5, z: 0}
- {x: 0.5, y: 0.5, z: 0}
- {x: -0.5, y: 0.5, z: 0}
--- !u!1 &2065747229 --- !u!1 &2065747229
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0

4
Assets/Scripts/Bullet.cs

@ -6,8 +6,8 @@ using UnityEngine;
public class Bullet : MonoBehaviour public class Bullet : MonoBehaviour
{ {
float lifeTime = 3f; float lifeTime = 1f;
float speed = 10f; float speed = 15f;
// Start is called before the first frame update // Start is called before the first frame update
void Start() void Start()
{ {

8
Assets/Scripts/Enemies.meta

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 70818c4860429eaa189725cc9bb46cfc
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

28
Assets/Scripts/Enemies/BaseEnemy.cs

@ -0,0 +1,28 @@
using System;
using Enemies.States;
namespace Enemies
{
public class BaseEnemy :Enemy
{
private void Awake()
{
state = new IdleState(this);
}
private void Update()
{
HandleStates();
state.Execute();
}
private void HandleStates()
{
if (health <= 0)
{
state = new DieState(this);
return;
}
}
}
}

3
Assets/Scripts/Enemies/BaseEnemy.cs.meta

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 637e76a880a1496a9bd4bb5256bc41a2
timeCreated: 1648903519

30
Assets/Scripts/Enemies/Enemy.cs

@ -0,0 +1,30 @@
using Enemies.States;
using UnityEngine;
namespace Enemies
{
public class Enemy : MonoBehaviour
{
public float health = 10f;
public float attackPower = 1;
public GameObject target { get; set; }
private float speed = 2f;
public IState state { get; set; }
// Start is called before the first frame update
void Start()
{
Destroy(gameObject, 10f);
}
// Update is called once per frame
void Update()
{
}
}
}

11
Assets/Scripts/Enemies/Enemy.cs.meta

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

3
Assets/Scripts/Enemies/States.meta

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: ff96e8a80d18490aa2d832b89efc879b
timeCreated: 1648900365

27
Assets/Scripts/Enemies/States/AttackState.cs

@ -0,0 +1,27 @@
using Enemies.States;
namespace Enemies
{
public class AttackState: IState
{
private Enemy context;
public AttackState(Enemy context)
{
this.context = context;
}
public void Enter()
{
throw new System.NotImplementedException();
}
public void Execute()
{
throw new System.NotImplementedException();
}
public void Exit()
{
throw new System.NotImplementedException();
}
}
}

3
Assets/Scripts/Enemies/States/AttackState.cs.meta

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: b599a154939544318719e918c1119e69
timeCreated: 1648900308

26
Assets/Scripts/Enemies/States/DieState.cs

@ -0,0 +1,26 @@
using UnityEngine;
namespace Enemies.States
{
public class DieState:IState
{
private Enemy context;
public DieState(Enemy context)
{
this.context = context;
}
public void Enter()
{
throw new System.NotImplementedException();
}
public void Execute()
{
Object.Destroy(context.gameObject);
}
public void Exit()
{
throw new System.NotImplementedException();
}
}
}

3
Assets/Scripts/Enemies/States/DieState.cs.meta

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 12afa5570dd440a089cd2e73d7657ff6
timeCreated: 1648905635

27
Assets/Scripts/Enemies/States/FollowState.cs

@ -0,0 +1,27 @@
using Enemies.States;
namespace Enemies
{
public class FollowState: IState
{
private Enemy context;
public FollowState(Enemy context)
{
this.context = context;
}
public void Enter()
{
throw new System.NotImplementedException();
}
public void Execute()
{
throw new System.NotImplementedException();
}
public void Exit()
{
throw new System.NotImplementedException();
}
}
}

3
Assets/Scripts/Enemies/States/FollowState.cs.meta

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: bf69b9658d394c9c865d69a41522240a
timeCreated: 1648903253

9
Assets/Scripts/Enemies/States/IState.cs

@ -0,0 +1,9 @@
namespace Enemies.States
{
public interface IState
{
public void Enter();
public void Execute();
public void Exit();
}
}

11
Assets/Scripts/Enemies/States/IState.cs.meta

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

28
Assets/Scripts/Enemies/States/IdleState.cs

@ -0,0 +1,28 @@
using Enemies.States;
namespace Enemies
{
public class IdleState: IState
{
private Enemy context;
public IdleState(Enemy context)
{
this.context = context;
}
public void Enter()
{
throw new System.NotImplementedException();
}
public void Execute()
{
throw new System.NotImplementedException();
}
public void Exit()
{
throw new System.NotImplementedException();
}
}
}

3
Assets/Scripts/Enemies/States/IdleState.cs.meta

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 26eeda0ae91e421f94c4453960894cea
timeCreated: 1648900414

27
Assets/Scripts/Enemies/States/PathState.cs

@ -0,0 +1,27 @@
using Enemies.States;
namespace Enemies
{
public class PathState: IState
{
private Enemy context;
public PathState(Enemy context)
{
this.context = context;
}
public void Enter()
{
throw new System.NotImplementedException();
}
public void Execute()
{
throw new System.NotImplementedException();
}
public void Exit()
{
throw new System.NotImplementedException();
}
}
}

3
Assets/Scripts/Enemies/States/PathState.cs.meta

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: b85849d4caf94ce9888c4c34a07ef1bc
timeCreated: 1648900334

28
Assets/Scripts/Enemies/States/TargetingState.cs

@ -0,0 +1,28 @@
using Enemies.States;
namespace Enemies
{
public class TargetingState: IState
{
private Enemy context;
public TargetingState(Enemy context)
{
this.context = context;
}
public void Enter()
{
throw new System.NotImplementedException();
}
public void Execute()
{
throw new System.NotImplementedException();
}
public void Exit()
{
throw new System.NotImplementedException();
}
}
}

3
Assets/Scripts/Enemies/States/TargetingState.cs.meta

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: c0d6af1e1a6143d9ad5b7fac796bda71
timeCreated: 1648900434

13
Assets/Scripts/PlayerController.cs

@ -2,14 +2,18 @@ using System;
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using UnityEngine; using UnityEngine;
using UnityEngine.Experimental.Rendering.Universal;
using UnityEngine.InputSystem; using UnityEngine.InputSystem;
public class PlayerController : MonoBehaviour public class PlayerController : MonoBehaviour
{ {
public Light2D nuzzleFlash;
private Rigidbody2D rb; private Rigidbody2D rb;
private SpriteRenderer sr; private SpriteRenderer sr;
private Camera main; private Camera main;
//Input //Input
private PlayerInput input; private PlayerInput input;
private InputAction moveAction; private InputAction moveAction;
@ -22,7 +26,7 @@ public class PlayerController : MonoBehaviour
public GameObject bulletPrefab; public GameObject bulletPrefab;
private bool isShooting = false; private bool isShooting = false;
private float lastShot = 0f; private float lastShot = 0f;
private float shootSpeed = 0.5f; private float shootSpeed = 0.25f;
// Start is called before the first frame update // Start is called before the first frame update
@ -62,6 +66,9 @@ public class PlayerController : MonoBehaviour
{ {
lastShot = Time.time; lastShot = Time.time;
Instantiate(bulletPrefab, transform.position, transform.rotation); Instantiate(bulletPrefab, transform.position, transform.rotation);
nuzzleFlash.intensity = 2f;
Invoke(nameof(disableNuzzleFlash), 0.025f);
} }
} }
@ -73,4 +80,8 @@ public class PlayerController : MonoBehaviour
{ {
isShooting = !stop; isShooting = !stop;
} }
void disableNuzzleFlash()
{
nuzzleFlash.intensity = 0f;
}
} }
Loading…
Cancel
Save