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

잡고 다시 놓기

parent e0b61434
......@@ -9,6 +9,7 @@ namespace Assets.Scripts.Interface
public interface IGrabable
{
void OnGrabbed(IGraber graber);
void OnDisGrabbed(IGraber graber);
bool IsGrabbed { get; }
}
......
......@@ -9,6 +9,7 @@ namespace Assets.Scripts.Interface
{
public interface IGraber
{
void OnDisGrab(IGrabable grabed);
void OnGrab(IGrabable grabed);
Vector3 GraberV { get; }
......
......@@ -10,6 +10,7 @@ namespace Assets.Scripts.Interface
{
void OnInteract(IInteractor interactor);
void OnDisInteract(IInteractor interactor);
string InteractType { get; }
}
}
......@@ -9,7 +9,7 @@ namespace Assets.Scripts.Interface
public interface IInteractor
{
void OnInteract(IInteractable interactable);
void OnDisInteract(IInteractable interactable);
IGraber IsGraber
{
get;
......
......@@ -28,9 +28,17 @@ public class GrabableObject : InteractiveObject,IGrabable
}
}
public void OnDisGrabbed(IGraber graber)
{
grabbed = false;
v = Vector3.zero;
}
public void OnGrabbed(IGraber graber)
{
grabbed = !grabbed;
grabbed = true;
}
public override void OnInteract(IInteractor interactor)
......@@ -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()
{
......
......@@ -9,6 +9,8 @@ public class PlayerMovement : FlatlandMovement,IInteractor,IGraber
{
bool isinertial = true;
bool isGrab = false;
bool isInteracting = false;
IInteractable interactiongObject;
public GameObject background;
......@@ -53,7 +55,7 @@ public class PlayerMovement : FlatlandMovement,IInteractor,IGraber
if (Input.GetKeyDown("g"))
{
OnInteract(TryFindClosestInterativeObject());
Interact();
}
}
......@@ -183,6 +185,19 @@ public class PlayerMovement : FlatlandMovement,IInteractor,IGraber
}
//interactor 구현
public void Interact()
{
if (isInteracting)
{
OnDisInteract(interactiongObject);
}
else
{
OnInteract(TryFindClosestInterativeObject());
}
}
public IGraber IsGraber
{
get
......@@ -197,9 +212,20 @@ public class PlayerMovement : FlatlandMovement,IInteractor,IGraber
{
return;
}
interactiongObject = interactable;
interactable.OnInteract(this);
}
public void OnDisInteract(IInteractable interactable)
{
if (interactable == null)
{
return;
}
interactable.OnDisInteract(this);
}
//충돌
public override void OnCollisionEnterchild(Collision collision)
{
......@@ -257,6 +283,14 @@ public class PlayerMovement : FlatlandMovement,IInteractor,IGraber
public void OnGrab(IGrabable grabed)
{
isGrab = true;
isInteracting = true;
}
public void OnDisGrab(IGrabable grabed)
{
isGrab = false;
isInteracting = false;
}
public Vector3 GraberV
......
......@@ -11,4 +11,5 @@ public abstract class InteractiveObject : Planemovement, IInteractable
}
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