¡¡ºÇ½ªÅª¤ÊÌÜɸ¤È¤·¤Æ¤Ï¡¢¥Ü¥¿¥ó¤ÎÆþÎÏ¥¿¥¤¥ß¥ó¥°¤Ë¤è¤Ã¤Æ¹¶·â¥¢¥Ë¥á¡¼¥·¥ç¥ó¤òϢ³¤Ç¤Ä¤Ê¤²¤é¤ì¤ë¤è¤¦¤Ë¹Í¤¨¤Æ¤¤¤Þ¤¹¤¬
¤Þ¤º¤Ï£±¤Ä¤º¤Ä½çÈÖ¤ËÀ߷פȼÂÁõ¤ò¿Ê¤á¤Æ¤¤¤¯¤è¤¦¤Ë¤·¤Þ¤¹¡£
¡¡
¡¡¤³¤³¤Ç¤ÏÄ̾ï¤Î¹¶·â¤ò£±²ó¹Ô¤¨¤ë¤è¤¦¤Ë¤¹¤ë¤Ë¤Ï¤É¤¦¤·¤¿¤é¤è¤¤¤«¹Í¤¨¤Þ¤·¤ç¤¦¡£
¥¸¥ã¥ó¥×¥Ü¥¿¥ó¤ÈƱÍͤˡ¢¹¶·âÍѤΥܥ¿¥ó¤ò£±¤ÄÍÑ°Õ¤·¤Æ¡¢¤½¤Î¥Ü¥¿¥ó¤ò²¡¤·¤¿¤é
¥×¥ì¥¤¥ä¡¼¤¬¹¶·â¤Î¥¢¥Ë¥á¡¼¥·¥ç¥ó¤ò¹Ô¤¦¤è¤¦¤Ë¤¹¤ë¤Î¤¬¡¢¤Þ¤º¤ÏÂè°ìÃʳ¬¤Ç¤¹¡£
¡¡¤½¤ÎºÝ¡¢State¤ÎÁ«°Ü¤Ë¤ÏAnyState¤òÍøÍѤ¹¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£
¤½¤Î¸å¡¢¹¶·â¥¢¥Ë¥á¡¼¥·¥ç¥ó¤¬ºÆÀ¸¤µ¤ì¤ë¤è¤¦¤Ë¤Ê¤Ã¤¿¤é¡¢¹¶·â¤ËÅö¤¿¤êȽÄê¤òÍÑ°Õ¤·¤Æ
Éð´ï¡¢¤Ê¤¤¤·¤Ï¥Ñ¥ó¥Á¤ä¥¥Ã¥¯¤Ê¤É¤Ë¤è¤Ã¤Æ¡¢Å¨¤ËÂФ·¤Æ¥À¥á¡¼¥¸¤òÍ¿¤¨¤é¤ì¤ë¤è¤¦¤Ë¤¹¤ë¤Î¤¬
¹¶·â¤È¤¤¤¦¹ÔÆ°¤ÎÌÜŪ¤Ë¤Ê¤ê¤Þ¤¹¡£
¡¡¤Þ¤¿¡¢¹¶·â¤¬¥Ò¥Ã¥È¤·¤¿ºÝ¤Ë¤Ï¡¢Å¨¤ÎHP¤ò¸º¾¯¤µ¤»¤¿¤¤¤Î¤Ç¡¢¹¶·âÎϤÎÃͤâÀßÄꤹ¤ëɬÍפ¬¤¢¤ê¤½¤¦¤Ç¤¹¡£
¡¡¹¶·â¤È°ì¸ý¤Ë¸À¤Ã¤Æ¤âÍÍ¡¹¤Ê¹¶·â¥Ñ¥¿¡¼¥ó¤¬¤¢¤ê¤Þ¤¹¤¬¡¢
¥Ü¥¿¥ó¤ÎÆ°ºî¤ËÈ¿±þ¤·¤Æ¥×¥ì¥¤¥ä¡¼¤¬¹¶·â¤Î¥¢¥Ë¥á¡¼¥·¥ç¥ó¤ò¹Ô¤¦¤È¤¤¤¦¤Î¤Ï¤¹¤Ù¤Æ¤Ë¶¦Ä̤¹¤ëÆâÍƤˤʤê¤Þ¤¹¡£
¡¡¤½¤ÎºÝ¡¢¤¤¤¯¤Ä¤«¤Î¥¢¥Ë¥á¡¼¥·¥ç¥ó¤Î¶¥¹ç¡¦Ê¬´ô¤¬È¯À¸¤·¤Þ¤¹¤Î¤Ç¡¢
¤½¤ì¤é¤Ë¤Ä¤¤¤Æ¤É¤Î¤è¤¦¤ËÂбþ¤¹¤ë¤«À߷פò¹Í¤¨¤Æ¤ª¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£
¡¡¡¡¡°ÜÆ°Ãæ¤Ç¤¢¤Ã¤Æ¤â¹¶·â¤ò¹Ô¤¦¤³¤È¤Ï²Äǽ¤Ç¤¢¤ë
¡¡¢¡¡¥¸¥ã¥ó¥×Ãæ¤Ç¤¢¤Ã¤Æ¤â¹¶·â¤ò¹Ô¤¦¤³¤È¤Ï²Äǽ¤Ç¤¢¤ë
¡¡£¡¡¹¶·â¥Ü¥¿¥ó¤ò²¡¤·¤Æ¹¶·â¥¢¥Ë¥á¡¼¥·¥ç¥ó¤¬ºÆÀ¸¤·¤Æ¤¤¤ë´Ö¤Ï¡¢ºÆÅ٥ܥ¿¥ó¤ò²¡¤·¤Æ¤â¹¶·â¥¢¥Ë¥á¡¼¥·¥ç¥ó¤ÏºÆÀ¸¤·¤Ê¤¤
¡¡
¡¡¾åµ¤ò¸«¤Æ¤ß¤Æ¤ë¤È¡¢¥¸¥ã¥ó¥×¤Î¾ì¹ç¤Ë¤Ï¡¢ÃÏÌ̤ËÀÜÃϤ·¤Æ¤¤¤Ê¤¤¤È¥¸¥ã¥ó¥×¤Ç¤¤Ê¤¤¤È¤¤¤¦¾ò·ï¤¬¤¢¤ê¤Þ¤·¤¿¤¬
¹¶·â¤Ë¤ÏÆÃÊ̤ʾò·ï¤Ï¤¢¤ê¤Þ¤»¤ó¤Î¤Ç¡¢£¤À¤±µ¤¤òÉÕ¤±¤ì¤Ð¤è¤µ¤½¤¦¤Ç¤¹¡£
¡¡¤Þ¤º¤ÏAnimator¥·¡¼¥ó¤ò³«¤¤¤Æ¡¢¿·¤·¤¤State¤ò£±¤ÄÄɲä·¤Þ¤·¤ç¤¦¡£Ì¾¾Î¤ÏAttack¤ËÊѹ¹¤·¤Æ¤ª¤¤Þ¤¹¡£
¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤Ë¤ÆºÆÀ¸¤·¤¿¤¤¹¶·â¤Î¥¢¥Ë¥á¡¼¥·¥ç¥ó¤ò»ý¤ÄAnimationClip¤òÁªÂò¤·¤ÆÅÐÏ¿¤·¤Æ¤ª¤¤Þ¤¹¡£
¤³¤Î¥¢¥Ë¥á¡¼¥·¥ç¥ó¤¬¹¶·â¥Ü¥¿¥ó¤ò²¡¤·¤¿ºÝ¤ËºÆÀ¸¤µ¤ì¤ë¤è¤¦¤Ë¤¹¤ë¤Î¤¬Âè°ìÃʳ¬¤ÎÌÜŪ¤Ç¤¹¡£
¡¡TransitionÍѤˡ¢¿·¤·¤¯Parameter¤ÎÄɲäò¹Ô¤¤¤Þ¤¹¡£Parameter¤Î²£¤Ë¤¢¤ë¥×¥é¥¹¥Ü¥¿¥ó¤ò²¡¤·¤Æ
Trigger·¿¤ÎParameter¤ò£±¤ÄºîÀ®¤·¤Þ¤¹¡£Ì¾¾Î¤ÏAttack¤Ë¤·¤Æ¤ª¤¤Þ¤¹¡£
AnyState¤òÍøÍѤ·¤ÆState¤ÎÁ«°Ü¤ò¹Ô¤¤¤Þ¤¹¤Î¤Ç¡¢Jump¤Î»þ¤ÈƱ¤¸¤ÇExit ¤ÎState¤Ø¤ÎÁ«°Ü¤Î¤ßTransition¤ÇÀßÄꤷ¤Þ¤¹¡£
¡¡Condition¤Ë¤è¤ëÁ«°Ü¾ò·ï¤Ï¤Ê¤·¤ÇÂç¾æÉפǤ¹¤¬¡¢¹¶·â¥¢¥Ë¥á¡¼¥·¥ç¥ó¤¬ÅÓÃæ¤Ç¥¥ã¥ó¥»¥ë¤µ¤ì¤Ê¤¤¤è¤¦¤Ë
HasExitTime¤Î¥×¥í¥Ñ¥Æ¥£¤Ë¥Á¥§¥Ã¥¯¤òÆþ¤ì¤Æ¤ª¤¯¤è¤¦¤Ë¤·¤Þ¤¹¡£
¡¡¼ÂÁõÎã¤Ç¤¹¡£
¾¤Ë¤â¥¢¥Ë¥á¡¼¥·¥ç¥ó¥¤¥Ù¥ó¥È¤òÍøÍѤ·¤¿ÊýË¡¤¬¤¢¤ê¤Þ¤¹¡£
¡¡<= ¡Ü¥Ü¥¿¥ó¤ò²¡¤¹¤È³«¤¤Þ¤¹¤Î¤Ç¡¢¼«Ê¬¤Ê¤ê¤Î¼ÂÁõ¤ò¹Ô¤Ã¤¿¾å¤Ç³Îǧ¤ò¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour {
[Header("°Üư®ÅÙ")]
public float moveSpeed;
[Header("²óž®ÅÙ")]
public float rotateSpeed;
[Header("¥¸¥ã¥ó¥×ÎÏ")]
public float jumpPower;
[Header("ÃÏÌÌȽÄêÍѥ쥤¥ä¡¼")]
public LayerMask groundLayer;
[Header("¹¶·âÎÏ")] // ÄɲÃ
public int attackPower; // ÄɲÃ
public bool isGround;
private Rigidbody rb;
private Animator anim;
void Start () {
rb = GetComponent<Rigidbody>();
anim = GetComponent<Animator>();
}
void Update() {
// ¥¸¥ã¥ó¥×
Jump();
// ¹¶·â // ÄɲÃ
Attack(); // ÄɲÃ
}
void FixedUpdate() {
// ¥¡¼ÆþÎÏ
float x = Input.GetAxis("Horizontal");
float z = Input.GetAxis("Vertical");
// °ÜÆ°
Move(x, z);
}
/// <summary>
/// °ÜÆ°¤¹¤ë
/// </summary>
/// <param name="x">X¼´¤Î°ÜÆ°ÃÍ</param>
/// <param name="z">Z¼´¤Î°ÜÆ°ÃÍ</param>
private void Move(float x, float z) {
// ÆþÎÏÃͤòÀµµ¬²½
Vector3 moveDir = new Vector3(x, 0, z).normalized;
// Rigidbody¤ÎAddforce¥á¥½¥Ã¥É¤òÍøÍѤ·¤Æ°ÜÆ°
rb.AddForce(moveDir * moveSpeed);
if (moveDir != Vector3.zero) {
anim.SetFloat("Speed", 0.8f);
} else {
anim.SetFloat("Speed", 0.0f);
}
// °ÜÆ°¤Ë¹ç¤ï¤»¤Æ¸þ¤¤òÊѤ¨¤ë
LookDirection(moveDir);
}
/// <summary>
/// ¸þ¤¤òÊѤ¨¤ë
/// </summary>
/// <param name="dir"></param>
private void LookDirection(Vector3 dir) {
// ¥Ù¥¯¥È¥ë(¸þ¤¤ÈÂ礤µ)¤Î2¾è¤ÎŤµ¤òfloat¤ÇÌ᤹ = Æ°¤¤¤Æ¤¤¤ë¤«¤É¤¦¤«¤Î³Îǧ
if (dir.sqrMagnitude <= 0f) {
return;
}
// Êä´Ö´Ø¿ôSlerp¡Ê»Ï¤Þ¤ê¤Î°ÌÃÖ, ½ª¤ï¤ê¤Î°ÌÃÖ, »þ´Ö¡Ë¡¡Leap¤Ç¤âÆ°¤¯¤¬ÅÓÃæ¤ÎµóÆ°¤¬ÊÑ
Vector3 forward = Vector3.Slerp(transform.forward, dir, rotateSpeed * Time.deltaTime);
// °ú¿ô¤ÏVector3¡¡¥ª¥Ö¥¸¥§¥¯¥È¤Î¸þ¤¤òÊѤ¨¤ë
transform.LookAt(transform.position + forward);
}
/// <summary>
/// ¥¸¥ã¥ó¥×
/// </summary>
private void Jump() {
// Linecast¤Ç¥¥ã¥é¤Î¸µ¤ËÃÏÌ̤¬¤¢¤ë¤«È½Äê ÃÏÌ̤¬¤¢¤ë¤È¤¤ÏTrue¤òÊÖ¤¹
isGround = Physics.Linecast(
transform.position + transform.up * 1,
transform.position - transform.up * 0.3f,
groundLayer);
// ¥¡¼ÆþÎϤÎJump¤ÇÈ¿±þ¡ÊGetButton¡Ë¥¹¥Ú¡¼¥¹¥¡¼(GetKey)
if (Input.GetButtonDown("Jump") && isGround) {
// ÃåÃϤ·¤Æ¤¤¤¿¤È¤
// ÃåÃÏȽÄê¤òfalse
isGround = false;
// Jump¥¹¥Æ¡¼¥È¤ØÁ«°Ü¤·¤Æ¥¸¥ã¥ó¥×¥¢¥Ë¥á¤òºÆÀ¸
anim.Play("Jump");
// AddForce¤Ë¤Æ¾åÊý¸þ¤ØÎϤò²Ã¤¨¤ë
rb.AddForce(Vector3.up * jumpPower);
}
}
/// <summary> // ¤³¤³¤«¤éÄɲÃ
/// Ä̾ﹶ·â
/// </summary>
private void Attack() {
if (Input.GetButtonDown("Action")) {
anim.Play("Attack");
Debug.Log("Ũ¤ËÂФ·¤Æ " + attackPower + " ¤Î¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë")
}
}
private void Hit() {
}
// ¤³¤³¤Þ¤ÇÄɲÃ
}
https://gyazo.com/5b84665313e3c2f2d789936c02f007b4
https://gyazo.com/995bea3d3ebd5ceb3086eeb1716fcecd