- Home /
Question by
teenklez · May 27, 2015 at 10:22 AM ·
2dragdollshootersidescroller
2D problem with Ragdoll collision.
Hello.There is my problem - http://www.youtube.com/watch?v=X8UmwH2Twag I'm using Raycast2D to shoot.The problem is when I shoot,the bullet collapsing with the body of the enemy and gliching,but when I'm trying to push the enemy,ragdoll is fine.Here is my shooting script and prefab. Shooting script -
using UnityEngine; using System.Collections;
public class Weapon : MonoBehaviour {
public float fireRate = 0;
public float Damage = 10;
public LayerMask WhatToHit;
public Transform BulletTrailPrefab;
float timeToSpawnEffect = 0;
public float effectSpawnRate = 10;
float timeToFire = 0;
Transform firePoint;
// Use this for initialization
void Awake () {
firePoint = transform.FindChild ("FirePoint");
if (firePoint == null) {
Debug.LogError ("No firePoint?WHAT TO FUUUCK!!!BOOOOM!");
}
}
// Update is called once per frame
void FixedUpdate () {
if (fireRate == 0) {
if (Input.GetButtonDown ("Fire1")) {
Shoot();
}
}
else {
if (Input.GetButton ("Fire1") && Time.time > timeToFire) {
timeToFire = Time.time + 1/fireRate;
Shoot();
}
}
}
void Shoot() {
Vector2 mousePosition = new Vector2 (Camera.main.ScreenToWorldPoint (Input.mousePosition).x, Camera.main.ScreenToWorldPoint(Input.mousePosition).y);
Vector2 firePointPosition = new Vector2 (firePoint.position.x, firePoint.position.y);
RaycastHit2D hit = Physics2D.Raycast (firePointPosition, mousePosition-firePointPosition, 100, WhatToHit);//100
if (Time.time >= timeToSpawnEffect) {
Effect ();
timeToSpawnEffect = Time.time +1/effectSpawnRate;
}
Debug.DrawLine (firePointPosition, (mousePosition - firePointPosition)*100,Color.cyan);
if (hit.collider != null) {
Debug.DrawLine (firePointPosition, hit.point,Color.red);
Debug.Log ("We shot " + hit.collider.name + " and deal " + Damage + " damage");
}
}
void Effect () {
Instantiate(BulletTrailPrefab,firePoint.position,firePoint.rotation);
}
}
And the prefab -
using UnityEngine; using System.Collections;
public class MoveTrail : MonoBehaviour {
public int moveSpeed = 100;//230
// Update is called once per frame
void FixedUpdate () {
transform.Translate (Vector3.right * Time.deltaTime * moveSpeed);//vector3 right
Destroy (gameObject, 1);//1
}
}
Sorry for so clumsy massage,but you are my only hope,guys...
Comment
Your answer
![](https://koobas.hobune.stream/wayback/20220613200314im_/https://answers.unity.com/themes/thub/images/avi.jpg)