Edit pull and push effect
This commit is contained in:
parent
4707a51a68
commit
25bf968311
@ -37,6 +37,9 @@ public class PlayerController : MonoBehaviour
|
|||||||
|
|
||||||
private Vector3 follow = Vector3.zero;
|
private Vector3 follow = Vector3.zero;
|
||||||
|
|
||||||
|
private GameObject pullObject = null;
|
||||||
|
private GameObject pushObject = null;
|
||||||
|
|
||||||
void Start()
|
void Start()
|
||||||
{
|
{
|
||||||
rb = GetComponent<Rigidbody>();
|
rb = GetComponent<Rigidbody>();
|
||||||
@ -113,6 +116,33 @@ public class PlayerController : MonoBehaviour
|
|||||||
angle = Mathf.Atan2(Vector3.Magnitude(axis), Vector3.Dot(-transform.up, saveDirection));
|
angle = Mathf.Atan2(Vector3.Magnitude(axis), Vector3.Dot(-transform.up, saveDirection));
|
||||||
transform.RotateAround(axis, angle * Time.deltaTime * 5f);
|
transform.RotateAround(axis, angle * Time.deltaTime * 5f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (pullObject != null)
|
||||||
|
{
|
||||||
|
PlatformManager platform = pullObject.GetComponent<PlatformManager>();
|
||||||
|
if (platform != null) {
|
||||||
|
float step = platform.speed * Time.deltaTime * 10f;
|
||||||
|
rb.AddForce((pullObject.transform.position - transform.position) * step, ForceMode.Force);
|
||||||
|
}
|
||||||
|
if (Vector3.Distance(pullObject.transform.position, transform.position) > 10f)
|
||||||
|
{
|
||||||
|
pullObject = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pushObject != null)
|
||||||
|
{
|
||||||
|
PlatformManager platform = pullObject.GetComponent<PlatformManager>();
|
||||||
|
if (platform != null)
|
||||||
|
{
|
||||||
|
float step = platform.speed * Time.deltaTime * 10f;
|
||||||
|
rb.AddForce(-(pushObject.transform.position - transform.position) * step, ForceMode.Force);
|
||||||
|
}
|
||||||
|
if (Vector3.Distance(pushObject.transform.position, transform.position) > 10f)
|
||||||
|
{
|
||||||
|
pushObject = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnCollisionExit(Collision other)
|
void OnCollisionExit(Collision other)
|
||||||
@ -171,17 +201,18 @@ public class PlayerController : MonoBehaviour
|
|||||||
|
|
||||||
saveDirection = -other.GetContact(0).normal;
|
saveDirection = -other.GetContact(0).normal;
|
||||||
|
|
||||||
Vector3 gDirection;
|
Vector3 gDirection = -other.GetContact(0).normal;
|
||||||
PlatformManager platform = other.gameObject.GetComponent<PlatformManager>();
|
PlatformManager platform = other.gameObject.GetComponent<PlatformManager>();
|
||||||
gDirection = -other.GetContact(0).normal;
|
|
||||||
if (platform != null) {
|
if (platform != null) {
|
||||||
switch (platform.type)
|
switch (platform.type)
|
||||||
{
|
{
|
||||||
case PlatformManager.PlatformType.Push:
|
case PlatformManager.PlatformType.Push:
|
||||||
rb.AddForce(other.GetContact(0).normal * platform.speed * Time.deltaTime, ForceMode.Impulse);
|
pushObject = other.gameObject;
|
||||||
|
pullObject = null;
|
||||||
break;
|
break;
|
||||||
case PlatformManager.PlatformType.Pull:
|
case PlatformManager.PlatformType.Pull:
|
||||||
rb.AddForce(-other.GetContact(0).normal * platform.speed * Time.deltaTime, ForceMode.Impulse);
|
pullObject = other.gameObject;
|
||||||
|
pushObject = null;
|
||||||
break;
|
break;
|
||||||
case PlatformManager.PlatformType.RotateY:
|
case PlatformManager.PlatformType.RotateY:
|
||||||
break;
|
break;
|
||||||
|
Loading…
Reference in New Issue
Block a user