剣での攻撃と当たり判定の作成※パンチとかキックは判定を手や足につければできるよ♪

剣の表示と位置調整
![1.png](https://qiita-image-store.s3.amazonaws.com/0/214359/cf448747-7aa3-a7be-d9ed-053d2b45589a.png)

Createをクリック→Cubeを作成→刀身に重ねる
![hantei.gif](https://qiita-image-store.s3.amazonaws.com/0/214359/5ec1afe9-1751-9ee9-37a2-b424869140f2.gif)

判定を剣の子オブジェクトにする
![2.png](https://qiita-image-store.s3.amazonaws.com/0/214359/e6350e11-be01-019d-ed9f-ff426fa3ef42.png)

剣を右手の子オブジェクトにする
![3.png](https://qiita-image-store.s3.amazonaws.com/0/214359/1eaa6391-61f5-c0b2-9065-fc5737591878.png)

剣で攻撃するアニメーションを追加
![4.png](https://qiita-image-store.s3.amazonaws.com/0/214359/d76fb85d-6de9-7464-091c-13da5f66d211.png)

攻撃アニメーションの名前の変更
![5.png](https://qiita-image-store.s3.amazonaws.com/0/214359/c22cc127-f7df-6f16-28d3-04d281e8a54e.png)

Attack変数の作成
![6.png](https://qiita-image-store.s3.amazonaws.com/0/214359/3af3ed1c-30de-514f-a939-d432f3ad6eda.png)

アニメーションの遷移
![7.png](https://qiita-image-store.s3.amazonaws.com/0/214359/08e7fb74-530f-3ab2-a23c-30cda1e77e10.png)

待機アニメーション→攻撃アニメーションの遷移の設定
![8.png](https://qiita-image-store.s3.amazonaws.com/0/214359/7284cbab-ec68-e8e2-01bd-e3bc1d37dbe7.png)

攻撃アニメーション→待機アニメーションの遷移の設定
![9.png](https://qiita-image-store.s3.amazonaws.com/0/214359/fe23cd72-fd29-cd66-b575-0a063835abbc.png)

攻撃アニメーションを終わらせるスクリプトの作成

```attack.cs
using UnityEngine;
using System.Collections;

public class attack : StateMachineBehaviour
{

    override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    {

        animator.SetBool("Attack", false);
    }   
}
```

攻撃アニメーションを終わらせるスクリプトの貼り付け
![10.png](https://qiita-image-store.s3.amazonaws.com/0/214359/63d30374-6b9b-017e-832c-fbc7bef75a1d.png)

以下のスクリプトは[この記事](https://qiita.com/Getabako/items/4219c2b43c3860060013)に書いたスクリプトに追記してます。面倒くさかったら丸ごとコピペして上書きしてね♪

```Player.cs
using UnityEngine;
using System.Collections;

public class Player : MonoBehaviour
{

    float h, v;

    Animator anim;

    void Start()
    {

        anim = GetComponent<Animator>();
    }

    void Update()
    {


        h = Input.GetAxis("Horizontal");
        v = Input.GetAxis("Vertical");

        if (v != 0f || h != 0f)
            anim.SetBool("isRunning", true);
        else
            anim.SetBool("isRunning", false);
//ここから追加部分        
// z キーが押された時
        if (Input.GetKeyDown(KeyCode.Z))
        {
            anim.SetBool("Attack", true);
        }
//ここまで
    }
}
```

スクリプトを貼り付けるオブジェクト：thirdpersoncontrollerの下に入れた主人公

```GetAnimationInfo.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class GetAnimationInfo : MonoBehaviour
{

    public GameObject obj;
    private AnimatorStateInfo stateInfo;
    private Animator anim;

    // Use this for initialization
    void Start()
    {
        anim = GetComponent<Animator>();
    }

    // Update is called once per frame
    void Update()
    {

        stateInfo = anim.GetCurrentAnimatorStateInfo(0);
        if (stateInfo.IsName("Base Layer.attack"))
        {
            obj.SetActive(true);
        }
        else
        {
            obj.SetActive(false);
        }

    }
}
```
スクリプトを貼り付けるオブジェクト：剣の下に入れた判定

アニメーションが終わったら非表示にする判定の設定
![11.png](https://qiita-image-store.s3.amazonaws.com/0/214359/7aa142ff-029f-b194-2b24-99c50483cf64.png)

攻撃してる時だけ判定、剣の向きが変だけど…みんなは上手く調整してね♪
![攻撃.gif](https://qiita-image-store.s3.amazonaws.com/0/214359/0d9b77cb-04ee-f346-68b7-0ff5da1f9e14.gif)

判定の見た目を透明にする
![12.png](https://qiita-image-store.s3.amazonaws.com/0/214359/df202575-7184-b884-4973-2bce9c27a002.png)

[目次に戻る](https://qiita.com/takasaki19841121/items/55daf89bbd2e0998a16c)