Add enemy animation
This commit is contained in:
parent
6cf9a21b2a
commit
27937e0a24
@ -9,11 +9,11 @@ GameObject:
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 592487110401094196}
|
||||
- component: {fileID: 592487110401094200}
|
||||
- component: {fileID: 592487110401094195}
|
||||
- component: {fileID: 592487110401094194}
|
||||
- component: {fileID: 592487110401094193}
|
||||
- component: {fileID: 3362493323285318061}
|
||||
- component: {fileID: 592487110401094200}
|
||||
- component: {fileID: 592487110401094199}
|
||||
- component: {fileID: 592487110401094198}
|
||||
- component: {fileID: 592487110401094204}
|
||||
@ -44,6 +44,31 @@ Transform:
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &592487110401094200
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 592487110401094192}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 978bec54408eb8f42a36fd68d7447f5a, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
CurrentBehavior: Nothing
|
||||
Renderer: {fileID: 592487111066334295}
|
||||
IdleSprite: {fileID: 6754164815184778395, guid: 8d816068e3260f54f9cb041dcd165103,
|
||||
type: 3}
|
||||
AttackingSprite: {fileID: 3837973818445772063, guid: 8d816068e3260f54f9cb041dcd165103,
|
||||
type: 3}
|
||||
MovementAnimationFramerate: 8
|
||||
MovementSprites:
|
||||
- {fileID: 6754164815184778395, guid: 8d816068e3260f54f9cb041dcd165103, type: 3}
|
||||
- {fileID: -8236523633242920872, guid: 8d816068e3260f54f9cb041dcd165103, type: 3}
|
||||
MoveSpeed: 1
|
||||
BehaviourTree: {fileID: 592487110401094199}
|
||||
Attacking: 0
|
||||
--- !u!50 &592487110401094195
|
||||
Rigidbody2D:
|
||||
serializedVersion: 4
|
||||
@ -122,21 +147,6 @@ MonoBehaviour:
|
||||
m_EditorClassIdentifier:
|
||||
MaxHealth: 30
|
||||
CurrentHealth: 30
|
||||
--- !u!114 &592487110401094200
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 592487110401094192}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 978bec54408eb8f42a36fd68d7447f5a, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
MoveSpeed: 1
|
||||
BehaviourTree: {fileID: 592487110401094199}
|
||||
CurrentBehavior: Nothing
|
||||
--- !u!114 &592487110401094199
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
|
@ -40,12 +40,19 @@ namespace Saltosion.OneWeapon.AI.Behaviours {
|
||||
}
|
||||
|
||||
public override bool CanBehave(Enemy subject) {
|
||||
return Follow.Target != null && (Follow.Target.position - subject.transform.position).magnitude <= MeleeRange;
|
||||
bool CanBehave = Follow.Target != null && (Follow.Target.position - subject.transform.position).magnitude <= MeleeRange;
|
||||
if (!CanBehave) {
|
||||
subject.Attacking = false;
|
||||
}
|
||||
return CanBehave;
|
||||
}
|
||||
|
||||
public override bool Execute(Enemy subject) {
|
||||
if (CooldownProgress > 0) {
|
||||
subject.Attacking = false;
|
||||
return false;
|
||||
} else {
|
||||
subject.Attacking = true;
|
||||
}
|
||||
|
||||
Vector2 Root = AnimatableTransform.parent.position + LocalOrigin;
|
||||
|
@ -4,10 +4,21 @@ using Saltosion.OneWeapon.AI;
|
||||
namespace Saltosion.OneWeapon {
|
||||
[RequireComponent(typeof(Rigidbody2D))]
|
||||
public class Enemy : MonoBehaviour {
|
||||
public float MoveSpeed;
|
||||
public BehaviourNode BehaviourTree;
|
||||
[Space(20)]
|
||||
[Header("Debug Info")]
|
||||
public string CurrentBehavior = "Nothing";
|
||||
[Header("Graphics")]
|
||||
public SpriteRenderer Renderer;
|
||||
public Sprite IdleSprite;
|
||||
public Sprite AttackingSprite;
|
||||
public int MovementAnimationFramerate;
|
||||
public Sprite[] MovementSprites;
|
||||
[Header("Stats")]
|
||||
public float MoveSpeed;
|
||||
[Header("Behaviour")]
|
||||
public BehaviourNode BehaviourTree;
|
||||
|
||||
[HideInInspector]
|
||||
public bool Attacking;
|
||||
|
||||
private Rigidbody2D Body;
|
||||
private bool MovingToTarget = false;
|
||||
@ -20,6 +31,14 @@ namespace Saltosion.OneWeapon {
|
||||
private void Update() {
|
||||
BehaviourTree.Execute(this);
|
||||
CurrentBehavior = BehaviourTree.GetExecutedName();
|
||||
|
||||
if (Attacking) {
|
||||
Renderer.sprite = AttackingSprite;
|
||||
} else if (Body.velocity.magnitude > 0.1) {
|
||||
Renderer.sprite = MovementSprites[(int)(Time.time * MovementAnimationFramerate) % MovementSprites.Length];
|
||||
} else {
|
||||
Renderer.sprite = IdleSprite;
|
||||
}
|
||||
}
|
||||
|
||||
private void FixedUpdate() {
|
||||
|
@ -32,7 +32,10 @@ namespace Saltosion.OneWeapon {
|
||||
}
|
||||
|
||||
public void Explode(bool destroyGameObject) {
|
||||
foreach (GameObject Obj in BodypartPrefabs) {
|
||||
int Count = Mathf.Clamp((int)(BodypartPrefabs.Length * Random.value + 1), 1, BodypartPrefabs.Length);
|
||||
for (int i = 0; i < Count; i++) {
|
||||
GameObject Obj = BodypartPrefabs[i];
|
||||
|
||||
// No body parts flying in censored mode
|
||||
float DirectionRadians = Random.value * Mathf.PI * 2.0f;
|
||||
Vector2 Direction = new Vector2(Mathf.Cos(DirectionRadians), Mathf.Sin(DirectionRadians));
|
||||
|
@ -18,7 +18,7 @@ namespace Saltosion.OneWeapon {
|
||||
}
|
||||
|
||||
public void Damage(float amount, Vector2 fromDirection) {
|
||||
BloodLauncher.Splatter(transform.position, -fromDirection, (int)(10 * amount), 100f, 100);
|
||||
BloodLauncher.Splatter(transform.position, -fromDirection, (int)(amount), 100f, 100);
|
||||
MaxHealth -= amount * (1 + PlayerFun.CurrentDamageBoost);
|
||||
if (MaxHealth <= 0) {
|
||||
MaxHealth = 0;
|
||||
|
Loading…
Reference in New Issue
Block a user