AddForce to object using OnCollisionEnter via a pre-existing AddForce?
I was making a test game based on a tutorial from a Youtuber named Brackeys on Unity 2019.3.2f1 Personal < DX11 >
Here's the link to the playlist as to how the entire thing runs:
https://www.youtube.com/watch?v=gAB64vfbrhI&list=PLPV2KyIb3jR5QFsefuO2RlAgWEz6EvVi6∈dex=6
As I followed his steps, I wanted to have a situation like this:
The player hits a block.
The player stops (this part is working.)
Either all obstacles with the tag "Obstacle" or only the obstacle hit will have a +Y-axis force applied to it.
For Step 3 I have looked around a lot on Unity Forums, eventually I found one that seemed to work partially:
https://answers.unity.com/questions/994020/addforce-to-object-using-oncollisionenter.html
I have modified that part of the code to my variables, here is the full code in C#.
using UnityEngine;
public class PlayerCollision : MonoBehaviour {
public PlayerMovement movement;
public Rigidbody obstacle;
void OnCollisionEnter (UnityEngine.Collision collisionInfo)
{
if (collisionInfo.gameObject.tag == "Obstacle")
Debug.Log("We hit an obstacle!");
{
movement.enabled = false;
collisionInfo.gameObject.GetComponent<Rigidbody>().AddForce(0, 500, 0);
}
}
}
The code had no problems, the log was empty, until when I run the game this message shows up:
MissingComponentException: There is no 'Rigidbody' attached to the "Floor" game object, but a script is trying to access it.
You probably need to add a Rigidbody to the game object "Floor". Or your script needs to check if the component is attached before using it.
UnityEngine.Rigidbody.AddForce (UnityEngine.Vector3 force, UnityEngine.ForceMode mode) (at :0)
UnityEngine.Rigidbody.AddForce (System.Single x, System.Single y, System.Single z) (at :0)
PlayerCollision.OnCollisionEnter (UnityEngine.Collision collisionInfo) (at Assets/PlayerCollision.cs:15)
I tried adding the RigidBody to the Floor but nothing moves when the game runs as if the floor is also an obstacle despite not having the "Obstacle" tag.
Extra info if it's helpful:
Nothing is flagged "Is Kinematic"
Currently nothing is inserted into "public RigidBody obstacle;"
Even if something is plugged in, nothing will move much when played.
I'm wondering if the Material plays any part in this, but it all worked well until I tried to do the altering.
Your answer
Follow this Question
Related Questions
How to make a knocback smooth - 2D Unity 0 Answers
Why does it display an error? 2 Answers
How to set a tag to a collision? 0 Answers
OnCollisionEnter fails to destroy Player GameObject 0 Answers