setting stuff up for fsm

rename file name to fit convention
pickandthrow got ref issue
This commit is contained in:
Glence 2022-11-10 13:06:37 +08:00
parent 80ab010b4b
commit d4d9e0c3b3
5 changed files with 120 additions and 13 deletions

View File

@ -8,6 +8,7 @@ public class Item : Script
MEDIUM, MEDIUM,
HEAVY HEAVY
} }
public int Score = 1;
public ItemCategory currCategory; public ItemCategory currCategory;
public Item(GameObject gameObj) : base(gameObj) { } public Item(GameObject gameObj) : base(gameObj) { }

View File

@ -4,6 +4,7 @@ using static PlayerController;
public class PickAndThrow : Script public class PickAndThrow : Script
{ {
public Vector3 holdPosition = new Vector3(0.0f, 1.0f, 0.0f);
public Vector3 throwForce = new Vector3(100.0f, 200.0f, 100.0f); public Vector3 throwForce = new Vector3(100.0f, 200.0f, 100.0f);
public GameObject item; public GameObject item;
private PlayerController pc; private PlayerController pc;
@ -23,7 +24,7 @@ public class PickAndThrow : Script
if (raccoonHoldLocation == null) if (raccoonHoldLocation == null)
Debug.Log("CHILD EMPTY"); Debug.Log("CHILD EMPTY");
else else
raccoonHoldLocation.LocalPosition = new Vector3(0.0f, 1.0f, 0.0f); raccoonHoldLocation.LocalPosition = holdPosition;
} }
protected override void update() protected override void update()
{ {
@ -38,21 +39,12 @@ public class PickAndThrow : Script
lastZDir = camerAixs.z; lastZDir = camerAixs.z;
} }
if (item.GetScript<Item>() != null && itemTransform == null && itemRidibody == null) RetrieveItemComponets();
{
itemTransform = item.GetComponent<Transform>();
if (itemTransform == null)
Debug.Log("Item transform EMPTY");
itemRidibody = item.GetComponent<RigidBody>(); if (pc != null && inRange && !pc.holdItem && Input.GetMouseButtonDown(Input.MouseCode.LeftButton))
if (itemRidibody == null)
Debug.Log("Item rb EMPTY");
}
if (pc != null && inRange && !pc.holdItem && Input.GetKey(Input.KeyCode.E))
pc.holdItem = true; pc.holdItem = true;
if (pc != null && itemRidibody != null && itemTransform != null && pc.holdItem) if (pc != null && pc.holdItem && itemRidibody != null && itemTransform != null)
{ {
itemTransform.LocalPosition = raccoonHoldLocation.GlobalPosition; itemTransform.LocalPosition = raccoonHoldLocation.GlobalPosition;
itemRidibody.IsGravityEnabled = false; itemRidibody.IsGravityEnabled = false;
@ -71,6 +63,30 @@ public class PickAndThrow : Script
else if(!pc.holdItem && itemRidibody != null) else if(!pc.holdItem && itemRidibody != null)
itemRidibody.IsGravityEnabled = true; itemRidibody.IsGravityEnabled = true;
} }
private void ResetItemObject()
{
itemRidibody = null;
itemTransform = null;
item = new GameObject();
}
private void RetrieveItemComponets()
{
//get the transform of the given item
if (item.GetScript<Item>() != null && itemTransform == null && itemRidibody == null)
{
itemTransform = item.GetComponent<Transform>();
if (itemTransform == null)
Debug.Log("Item transform EMPTY");
itemRidibody = item.GetComponent<RigidBody>();
if (itemRidibody == null)
Debug.Log("Item rb EMPTY");
}
}
protected override void onCollisionEnter(CollisionInfo info) protected override void onCollisionEnter(CollisionInfo info)
{ {
} }

View File

@ -1,5 +1,6 @@
using SHADE; using SHADE;
using System; using System;
using System.Collections.Generic;
using static Item; using static Item;
public class PlayerController : Script public class PlayerController : Script
@ -11,10 +12,20 @@ public class PlayerController : Script
RUNNING, RUNNING,
JUMP, JUMP,
FALLING, FALLING,
LANDED,
CAUGHT, CAUGHT,
TOTAL TOTAL
} }
public enum WalkingState
{
CARRY,
AIMING,
THROW,
WALK,
TOTAL
}
public RigidBody rb { get; set; } public RigidBody rb { get; set; }
private Transform tranform; private Transform tranform;
private Camera cam; private Camera cam;
@ -215,6 +226,7 @@ public class PlayerController : Script
{ {
if (rb != null) if (rb != null)
{ {
rb.AddForce(new Vector3(axisMove.x, 0.0f,axisMove.y) * moveForce); rb.AddForce(new Vector3(axisMove.x, 0.0f,axisMove.y) * moveForce);
if (isMoveKeyPress) if (isMoveKeyPress)

View File

@ -0,0 +1,63 @@
using SHADE;
using System;
public abstract class BaseState
{
protected string stateName = "Base State";
protected StateMachine machine;
protected string animationName = "";
public BaseState(StateMachine stateMachine, string animName)
{
machine = stateMachine;
animationName = animName;
}
public virtual void OnEnter()
{
}
public abstract void Update(float dt);
public virtual void OnExit()
{
}
public string GetStateName()
{
return stateName;
}
public string GetAnimName()
{
return animationName;
}
public virtual float GetAnimPercent()
{
return 1.0f;
}
public virtual void onCollisionEnter(CollisionInfo other)
{
}
public virtual void onCollisionStay(CollisionInfo other)
{
}
public virtual void onCollisionExit(CollisionInfo info)
{
}
public virtual void onTriggerEnter(CollisionInfo info)
{
}
public virtual void onTriggerStay(CollisionInfo info)
{
}
public virtual void onTriggerExit(CollisionInfo info)
{
}
}

View File

@ -0,0 +1,15 @@
using SHADE;
using System;
using System.Collections.Generic;
public abstract class StateMachine : Script
{
private Dictionary<Type, BaseState> stateDictionary;
public BaseState currentState = null;
public string currentStateName;
public string currentAnimName;
public StateMachine(GameObject gameObj) : base(gameObj) { }
}