- Home /
C# Swing Weapon Curve
I'm trying to create a script that upon left mouse click swings the weapon along the Z axis and along the Y axis with the right click. I got my weapon to rotate along those axes. But transform.Rotate causes the weapon to rotate along it's axis and that doesn't make the weapon curve as if you were actually swinging it. How do you get those curves?
using UnityEngine;
using System.Collections;
public class WeaponSwing : MonoBehaviour {
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
Vector3 pos = Input.mousePosition;
pos.z = transform.position.z - Camera.main.transform.position.z;
transform.position = Camera.main.ScreenToWorldPoint(pos);
if(Input.GetMouseButton(0)){
transform.Rotate (90 * Time.deltaTime, 0, 0);
}
if(Input.GetMouseButton(1)){
transform.Rotate (0, 0, 90 * Time.deltaTime);
}
}
void OnCollisionEnter(Collision col) {
Debug.Log ("Hit Something");
}
}
You usually swing a waepon along a plane, not an axis. I'm not quite sure what you mean by "along Z axis"
Why are you even trying to script a motion like that? Import it from a modeling/animation software, or use the animation curve editor to keyframe it out.
Answer by ZegTronic · Dec 04, 2014 at 07:53 AM
So, my weapon doesn't work the way you want your's to, but I got mine to rotate correctly through what is holding the weapon.
using UnityEngine; using System.Collections;
public class VerticalLookSword : MonoBehaviour {
public float vSpeed = 2.0f;
public float swordTurn = 2.0f;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
float v = vSpeed * Input.GetAxis("Mouse Y");
transform.Translate(0,0,0);
if(Input.GetKey(KeyCode.Mouse0)){
transform.Rotate (0, -90 * Time.deltaTime, 0);
transform.Translate (Vector3.left * Time.deltaTime * swordTurn);
}
if(Input.GetKey(KeyCode.Mouse1)){
transform.Rotate (0, 90 * Time.deltaTime, 0);
transform.Translate (Vector3.right * Time.deltaTime * swordTurn);
}
}
}
Now, because my character is a wolf and it swings it through its mouth, it won't work for typical hands, but this let's it stay in the placement where you first set,
hope this helped. :)
Your answer
Follow this Question
Related Questions
C# Non-Static Member Rigidbody2D.MovePosition 1 Answer
Problem with player movements 1 Answer
How to make specific text in a string array Bold C# 2 Answers
Movement Script Help 1 Answer
C# Plane Detecting a Gameobject 1 Answer