Commit f54dd753 authored by 16이진형's avatar 16이진형

잡고 다시 놓기

parent e0b61434
...@@ -9,6 +9,7 @@ namespace Assets.Scripts.Interface ...@@ -9,6 +9,7 @@ namespace Assets.Scripts.Interface
public interface IGrabable public interface IGrabable
{ {
void OnGrabbed(IGraber graber); void OnGrabbed(IGraber graber);
void OnDisGrabbed(IGraber graber);
bool IsGrabbed { get; } bool IsGrabbed { get; }
} }
......
...@@ -9,6 +9,7 @@ namespace Assets.Scripts.Interface ...@@ -9,6 +9,7 @@ namespace Assets.Scripts.Interface
{ {
public interface IGraber public interface IGraber
{ {
void OnDisGrab(IGrabable grabed);
void OnGrab(IGrabable grabed); void OnGrab(IGrabable grabed);
Vector3 GraberV { get; } Vector3 GraberV { get; }
......
...@@ -10,6 +10,7 @@ namespace Assets.Scripts.Interface ...@@ -10,6 +10,7 @@ namespace Assets.Scripts.Interface
{ {
void OnInteract(IInteractor interactor); void OnInteract(IInteractor interactor);
void OnDisInteract(IInteractor interactor);
string InteractType { get; } string InteractType { get; }
} }
} }
...@@ -9,7 +9,7 @@ namespace Assets.Scripts.Interface ...@@ -9,7 +9,7 @@ namespace Assets.Scripts.Interface
public interface IInteractor public interface IInteractor
{ {
void OnInteract(IInteractable interactable); void OnInteract(IInteractable interactable);
void OnDisInteract(IInteractable interactable);
IGraber IsGraber IGraber IsGraber
{ {
get; get;
......
...@@ -28,9 +28,17 @@ public class GrabableObject : InteractiveObject,IGrabable ...@@ -28,9 +28,17 @@ public class GrabableObject : InteractiveObject,IGrabable
} }
} }
public void OnDisGrabbed(IGraber graber)
{
grabbed = false;
v = Vector3.zero;
}
public void OnGrabbed(IGraber graber) public void OnGrabbed(IGraber graber)
{ {
grabbed = !grabbed; grabbed = true;
} }
public override void OnInteract(IInteractor interactor) public override void OnInteract(IInteractor interactor)
...@@ -46,6 +54,19 @@ public class GrabableObject : InteractiveObject,IGrabable ...@@ -46,6 +54,19 @@ public class GrabableObject : InteractiveObject,IGrabable
} }
} }
public override void OnDisInteract(IInteractor interactor)
{
if (interactor.IsGraber != null)
{
graber = interactor.IsGraber;
if (graber.IsGrab)
{
graber.OnDisGrab(this);
OnDisGrabbed(graber);
}
}
}
protected override void FixedUpdate() protected override void FixedUpdate()
{ {
......
...@@ -9,6 +9,8 @@ public class PlayerMovement : FlatlandMovement,IInteractor,IGraber ...@@ -9,6 +9,8 @@ public class PlayerMovement : FlatlandMovement,IInteractor,IGraber
{ {
bool isinertial = true; bool isinertial = true;
bool isGrab = false; bool isGrab = false;
bool isInteracting = false;
IInteractable interactiongObject;
public GameObject background; public GameObject background;
...@@ -53,7 +55,7 @@ public class PlayerMovement : FlatlandMovement,IInteractor,IGraber ...@@ -53,7 +55,7 @@ public class PlayerMovement : FlatlandMovement,IInteractor,IGraber
if (Input.GetKeyDown("g")) if (Input.GetKeyDown("g"))
{ {
OnInteract(TryFindClosestInterativeObject()); Interact();
} }
} }
...@@ -183,6 +185,19 @@ public class PlayerMovement : FlatlandMovement,IInteractor,IGraber ...@@ -183,6 +185,19 @@ public class PlayerMovement : FlatlandMovement,IInteractor,IGraber
} }
//interactor 구현 //interactor 구현
public void Interact()
{
if (isInteracting)
{
OnDisInteract(interactiongObject);
}
else
{
OnInteract(TryFindClosestInterativeObject());
}
}
public IGraber IsGraber public IGraber IsGraber
{ {
get get
...@@ -197,9 +212,20 @@ public class PlayerMovement : FlatlandMovement,IInteractor,IGraber ...@@ -197,9 +212,20 @@ public class PlayerMovement : FlatlandMovement,IInteractor,IGraber
{ {
return; return;
} }
interactiongObject = interactable;
interactable.OnInteract(this); interactable.OnInteract(this);
} }
public void OnDisInteract(IInteractable interactable)
{
if (interactable == null)
{
return;
}
interactable.OnDisInteract(this);
}
//충돌 //충돌
public override void OnCollisionEnterchild(Collision collision) public override void OnCollisionEnterchild(Collision collision)
{ {
...@@ -257,6 +283,14 @@ public class PlayerMovement : FlatlandMovement,IInteractor,IGraber ...@@ -257,6 +283,14 @@ public class PlayerMovement : FlatlandMovement,IInteractor,IGraber
public void OnGrab(IGrabable grabed) public void OnGrab(IGrabable grabed)
{ {
isGrab = true; isGrab = true;
isInteracting = true;
}
public void OnDisGrab(IGrabable grabed)
{
isGrab = false;
isInteracting = false;
} }
public Vector3 GraberV public Vector3 GraberV
......
...@@ -11,4 +11,5 @@ public abstract class InteractiveObject : Planemovement, IInteractable ...@@ -11,4 +11,5 @@ public abstract class InteractiveObject : Planemovement, IInteractable
} }
public abstract void OnInteract(IInteractor interactor); public abstract void OnInteract(IInteractor interactor);
public abstract void OnDisInteract(IInteractor interactor);
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment