- Home /
How do I make my knife stab in a tree?
I have my knife throwing script here, but how do I make my knife stab? I tryed MyRigidbody.velocity = Vector3.zero; Destroy (MyGameObject.GetCompponent()); MyRigidBody.isKinematic = true; etc. Here is my throw script:
using UnityEngine;
using System.Collections;
public class Throwinit : MonoBehaviour {
public Rigidbody rocketPrefab;
public Transform barrelEnd;
public float Speed = 750f;
public float rotateSpeed = 750f;
public int maxKnifes = 4;
public int currentKnifes = 4;
void Update ()
{
if(Input.GetButtonDown("Fire1"))
{
if (maxKnifes <= 0)
{
return;
}
Rigidbody rocketInstance;
rocketInstance = Instantiate(rocketPrefab, barrelEnd.position, barrelEnd.rotation) as Rigidbody;
rocketInstance.AddForce(barrelEnd.forward * Speed);
rocketInstance.AddTorque(barrelEnd.right * rotateSpeed);
maxKnifes = currentKnifes -1;
currentKnifes = maxKnifes;
}
}
}
Can someone help me? Thanks
You're going to have to use colliders and then freeze the transforms on enter: https://unity3d.com/learn/tutorials/topics/physics/detecting-collisions-oncollisionenter
Answer by GameMaker102 · Sep 06, 2017 at 09:13 PM
What you want to do is add a script to the knife object that you're throwing. Here's my script I used to make it stop ONLY if it hits a tree:
public float stickMinSpeed = 0; // min speed for the knife to stick to a tree. I kept it a 0 just for testing
void OnCollisionEnter(Collision col) {
if (col.gameObject.tag == "Tree" /* You could also create a "Wood" tag */ && GetComponent<Rigidbody>().velocity.magnitude >= stickMinSpeed) {
GetComponent<Rigidbody> ().isKinematic = true;
}
}
Now it will only become kinematic if it hits the tree.
Your answer
![](https://koobas.hobune.stream/wayback/20220612134333im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
How do you cause damage based on object Velocity? 0 Answers
How do I make my knife stab in a tree? 2 Answers
When I throw the projectile, it triggers the land collision before landing on it 0 Answers
In Unity how to “throw” a sprite with a player if both has rigidbody2d and colliders? 0 Answers
Problem with damaging game object 1 Answer