心理サイエンス応用演習-11

前回授業へのコメント
 そこそこゲームっぽいものが作れるように、順を追って説明してきたのですが、かなり複雑になってきました。皆さん、大丈夫でしょうか? かなり難しくなって来ていますので、今回の課題は今週と来週の2週かけて行うという事にさせてください。先週の課題第4回第5回あたりの課題を復習しながら行うと、わかりやすいと思います。余裕がある方は、他のモーションや音声を足したり、背景をつけてみても良いかもしれません。

キャラクターをインタラクションさせる
 今週はヒーローとゾンビをインタラクションさせてみます。
1.ヒーローのセッティング
2.ゾンビのセッティング
3.OnCollisonイベントとOnTriggerイベントの説明
4.実際にインタラクションさせる
の順で進んでいきます。必要なファイルは、下記files09の圧縮ファイルの中に全て入っていますので、それを利用してください。heroの設定動画で、hero2にAudioSourceをつける工程を入れ忘れているので、各自AudioSourceをつけるようにしてください。でないと、モーションを再生しても音が出ません。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class hero2 : MonoBehaviour
{
    Animator anim;
    AudioSource audio;
    float speed = 0f;
    float turn = 0f;
    public AudioClip stepSnd;
    public AudioClip kickSnd;

    // Start is called before the first frame update
    void Start()
    {
        anim = GetComponent<Animator>();    //Anmatorを取得
        audio = gameObject.GetComponent<AudioSource>(); //AudioSourceを取得
    }

    // Update is called once per frame
    void Update()
    {
        speed = 0f;
        turn = 0f;

        if (Input.GetKey(KeyCode.W))    //前進
        {
            speed = 1f;
        }
        
        if (Input.GetKey(KeyCode.S))    //後退
        {
            speed = -1f;
        }
        
        if (Input.GetKey(KeyCode.D))    //右ターン
        {
            transform.Rotate(new Vector3(0f, Time.deltaTime * 40, 0f));   //右回転
        }
        
        if (Input.GetKey(KeyCode.A))    //左ターン
        {
            transform.Rotate(new Vector3(0f, Time.deltaTime * -40f, 0f));  //左回転
        }

        if (Input.GetKeyDown(KeyCode.Space))
        {
            anim.SetTrigger("kick");
        }

        anim.SetFloat("speed", speed);  //AnimatorControllerにspeedを渡す
        anim.SetFloat("turn", turn);    //AnimatorControllerにturnを渡す
    }

    public void StepSnd()
    {
        audio.PlayOneShot(stepSnd); //足音再生
    }

    public void KickSnd()
    {
        audio.PlayOneShot(kickSnd); //キック音再生
    }
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class zom1 : MonoBehaviour
{
    Animator anim;
    AudioSource audio;
    public AudioClip damageSnd;

    // Start is called before the first frame update
    void Start()
    {
        anim = GetComponent<Animator>();    //Anmatorを取得
        audio = gameObject.GetComponent<AudioSource>(); //AudioSourceを取得
    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Z))    //Zキーで
        {
            anim.SetTrigger("damage");      //damageアニメーション再生
        }
    }

    private void OnTriggerEnter(Collider other) //領域に入るのを検出
    {
        if (other.gameObject.tag == "WEAPON") { //TagがWeaponだったら
            anim.SetTrigger("damage");          //damageアニメーション再生
        }
    }

    public void DmgSnd()
    {
        audio.PlayOneShot(damageSnd); //ダメージ音再生
    }
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class collision : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        
    }

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

    private void OnCollisionEnter(Collision collision)  //衝突を検出
    {
        Debug.Log("コリジョン:" + collision.gameObject.tag);
    }

    private void OnTriggerEnter(Collider other) //領域に入るのを検出
    {
        Debug.Log("トリガー:" + other.gameObject.tag);
    }
}


おまけで僕が使った怖いフリー音声素材つけておきます↓背景とこのBGMでだいぶん怖くなるんじゃないでしょうか。

リアクションの記入
 1週目は6/23までに、2週目は6/30までに、下記アドレスからその週行った内容に応じたリアクションを登録してください(リアクションは出欠記録を兼ねており、その内容は成績評価の対象となります。空で送らないようにご注意ください。)。
心理サイエンス応用演習1リアクション