- Home /
Question by
animeman0 · Jul 05, 2015 at 06:55 PM ·
c#collisionmovementprogrammingscriptingbasics
Basic collision not working - c#
void OnCollisionEnter (Collision touch)
{
if(touch.gameObject.name == "flag")
{
Destroy (touch.gameObject);
}
}
So this my code. when the player collides with the flag it should dissapear, however nothing is happening.
Full code: using UnityEngine; using System.Collections;
public class MovementController : MonoBehaviour {
public float maxSpeed = 10f; //new float variable called maxspeed it equals 10
bool facingRight = true; //new bool variable called facingright it equals true
Animator anim;
bool grounded = false;
public Transform groundCheck;
float groundRadius = 0.2f;
public LayerMask WhatIsGround;
public float jumpForce = 700f;
void Start ()
{
anim = GetComponent<Animator>();
}
void FixedUpdate ()
{
grounded = Physics2D.OverlapCircle (groundCheck.position, groundRadius, WhatIsGround); //creates circle, groundCheck.position is where the cirle is generated, groundRadius is the radius of the cirle, WhatIsGround is everything it will collide with.
anim.SetBool ("Ground", grounded); // animation bool is Ground = grounded
anim.SetFloat ("vspeed", rigidbody2D.velocity.y);
if (!grounded) return;
float move = Input.GetAxisRaw ("Horizontal"); //how much we are moving
anim.SetFloat ("Speed", Mathf.Abs (move)); //mathf.abs is absoloute value, doesnt matter what direction im moving in.
rigidbody2D.velocity = new Vector2 (move * maxSpeed, rigidbody2D.velocity.y); //move * maxSpeed makes the character move depending on what key they're pressing * maxspeed. rigidbody2D.velocity.y keeps our y value the same.
if (move > 0 && !facingRight) //if moving left and not facing left
Flip (); //flip
else if (move < 0 && facingRight) //if moving to the right and not facing right
Flip (); //flip
}
void Update()
{
//DONT DO THIS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
if (grounded && Input.GetKeyDown (KeyCode.Space)) // if player is grounded and space is pressed
{
anim.SetBool("Ground", false); // set ground to false
rigidbody2D.AddForce (new Vector2(0, jumpForce));
}
}
void Flip ()
{
facingRight = ! facingRight; // flips the character
Vector3 theScale = transform.localScale; //flips the local scale
theScale.x *= -1; //flip the x axis
transform.localScale = theScale; //apply all of this back to the local scale
}
void OnCollisionEnter (Collision touch)
{
if(touch.gameObject.name == "flag")
{
Destroy (touch.gameObject);
}
}
}
Comment
Answer by tanoshimi · Jul 05, 2015 at 07:26 PM
Looking at the rest of your code, I'm guessing you meant to use use OnCollisionEnter2D...
Your answer
Follow this Question
Related Questions
Multiple Cars not working 1 Answer
Making a bubble level (not a game but work tool) 1 Answer
How to hold objects in third person? 1 Answer
GetKeyUp not registering 2 Answers
Elevator script problem 1 Answer