- Home /
My asteroid dont move after shoot - why?
Hello, I have two scripts - one for my beam and one for asteroid. The problem is, that after my beam shoot asteroid, the asteroid is only move up along Y axis and rotate, but not change z or x position. I thought, that if i attach a rigidbody and cofigurable joint to my asteroid, it will move properly. What I missing?
Here is my beam script
using UnityEngine;
using System.Collections;
public class Beam : MonoBehaviour {
public float beamVelocity;
public GameObject miniExplosion;
public GameObject go;
public void Go (Vector3 shipVelocity)
{
rigidbody.AddForce(transform.forward + shipVelocity, ForceMode.VelocityChange);
}
void FixedUpdate()
{
rigidbody.AddForce(transform.forward * beamVelocity, ForceMode.Acceleration);
}
void OnTriggerEnter(Collider innyobiekt)
{
Asteroid ast = innyobiekt.transform.GetComponent<Asteroid>();
if(ast != null)
{
ast.Hit();
go = (GameObject)Instantiate(miniExplosion, transform.position, transform.rotation);
Detonator det = go.GetComponent<Detonator>();
det.size = 1;
Destroy(this.gameObject);
}
}
}
And here is my Asteroid script:
using UnityEngine;
using System.Collections;
public class Asteroid : MonoBehaviour {
public float maxAsteroidVelocity;
public float minAsteroidVelocity;
public AudioClip explosionSound;
public GameObject explosionPrefab;
GameObject go;
private Vector3 velocity;
private float asteroidHitPoints = 100;
// Use this for initialization
void Start ()
{
}
// Update is called once per frame
void FixedUpdate ()
{
}
public void Hit()
{
asteroidHitPoints--;
if(asteroidHitPoints <= 0)
{
Explode();
}
}
public void Explode()
{
go = (GameObject)Instantiate(explosionPrefab, transform.position, transform.rotation);
Detonator det = go.GetComponent<Detonator>();
det.size = 1;
Destroy(this.gameObject);
}
}
I cannot see anywhere that force is applied to the asteroid from the beam on impact. And your beam is I guess a Trigger Collider (void OnTriggerEnter), so it won't interact with other physical colliders. SO it is a mystery why you actually get any reaction between the asteriod and the beam. If your beam has to be a trigger collider, then consider AddForce or AddForceAtPosition, and use Force$$anonymous$$ode.Impulse
Answer by Zaboleq · Dec 07, 2012 at 09:33 AM
Anyone :(?
Hi There.
Please don't post comments as answers. Post comments by clicking the [add new comment] button, a window then open for you to type in. Answer fields are for answers only, as this is a knowledge base.
You can convert this answer to a comment (or just edit your original question), you'll also get a better chance of getting an actual answer if the main list shows none or one answer in blue =]
Under the answer where it says edit | delete | more , click on more , then convert to comment
Your answer
![](https://koobas.hobune.stream/wayback/20220613085054im_/https://answers.unity.com/themes/thub/images/avi.jpg)