Falling Platform
I'm trying to create a falling platform, similar to the ones in Mario games where once you step onto it, after a delayed amount of time, it falls downwards. I'm not too concerned with the time delay as of yet but I can't seem to figure out what's wrong with my code. I've tried two different methods (as stated below) and neither of them are working. This is my script for the platform that is meant to fall. It has Use Gravity and Is Kinematic checked on the Rigidbody, as well as Is Trigger checked in the Box Collider. I'd appreciate the help. (This is a 3D program)
private Rigidbody rb;
void Start ()
{
rb = GetComponent<Rigidbody> ();
}
void OnCollisionEnter(Collision collidedWithThis)
{
if (collidedWithThis.transform.name == "Sphere")
{
//first method
Vector3 movement = new Vector3 (0.0f, -35.0f, 0.0f);
rb.AddForce (movement * speed);
//second method
rb.velocity = transform.up * -speed;
}
}
}
Answer by Ahndrakhul · May 01, 2017 at 02:22 AM
Checking isKinematic on a rigidbody will cause it not to be affected by the physics engine, which is why AddForce is not moving your platform. If you want the platform to fall under the influence of gravity after some delay, you can do something like This (Make sure that neither collider is set as a trigger):
using System.Collections;
using UnityEngine;
public class FallingPlatform : MonoBehaviour
{
public float fallDelay = 2.0f;
void OnCollisionEnter(Collision collidedWithThis)
{
if (collidedWithThis.gameObject.name == "Sphere")
{
StartCoroutine(FallAfterDelay());
}
}
IEnumerator FallAfterDelay()
{
yield return new WaitForSeconds(fallDelay);
GetComponent<Rigidbody>().isKinematic = false;
}
}
Thank you it worked, setting is$$anonymous$$inematic false causes it to fall to gravity. Brilliant!
Your answer
Follow this Question
Related Questions
Rigidbody rotate velocity 0 Answers
Overriding OnCollisionEnter function 2 Answers
Space,Gravity,RigidBody,Physics Forces 0 Answers
How to calculate force applied to gameObject? 0 Answers
Mass effects terminal velocity 1 Answer