ジャンプアニメーションの実装と同期






ジャンプアニメーション
using UnityEngine;
using Photon.Pun;
public class PlayerController : MonoBehaviourPunCallbacks
{
private CharacterController controller;
private Vector3 moveDir = Vector3.zero;
private float gravity = 20f;
private float verticalVelocity;
public float speed;
public float jumpPower;
private Animator animator;
void Start()
{
controller = GetComponent<CharacterController>();
animator = GetComponent<Animator>();
}
void Update()
{
if (!photonView.IsMine)
{
return;
}
if (controller.isGrounded)
{
verticalVelocity = -0.5f;
if (InputManager.isa.Player.Jump.triggered)
{
verticalVelocity = jumpPower;
// ★追加
animator.SetTrigger("Jump");
}
}
else
{
verticalVelocity -= gravity * Time.deltaTime;
}
Vector2 movement2 = InputManager.isa.Player.Move.ReadValue<Vector2>();
Vector3 movementV = new Vector3(0, 0, movement2.y).normalized;
Vector3 movementH = new Vector3(movement2.x, 0, 0).normalized;
Vector3 forward = Camera.main.transform.forward;
forward.y = 0;
Vector3 right = Camera.main.transform.right;
moveDir = forward * movementV.z + right * movementH.x;
if (moveDir.magnitude >= 0.1f)
{
transform.rotation = Quaternion.LookRotation(moveDir);
}
animator.SetFloat("Move", moveDir.magnitude);
Vector3 finalMove = moveDir * speed;
finalMove.y = verticalVelocity;
if (controller.enabled)
{
controller.Move(finalMove * Time.deltaTime);
}
}
}




【Unity6版】BattleOnline(全38回)
他のコースを見る





ジャンプアニメーション
using UnityEngine;
using Photon.Pun;
public class PlayerController : MonoBehaviourPunCallbacks
{
private CharacterController controller;
private Vector3 moveDir = Vector3.zero;
private float gravity = 20f;
private float verticalVelocity;
public float speed;
public float jumpPower;
private Animator animator;
void Start()
{
controller = GetComponent<CharacterController>();
animator = GetComponent<Animator>();
}
void Update()
{
if (!photonView.IsMine)
{
return;
}
if (controller.isGrounded)
{
verticalVelocity = -0.5f;
if (InputManager.isa.Player.Jump.triggered)
{
verticalVelocity = jumpPower;
// ★追加
animator.SetTrigger("Jump");
}
}
else
{
verticalVelocity -= gravity * Time.deltaTime;
}
Vector2 movement2 = InputManager.isa.Player.Move.ReadValue<Vector2>();
Vector3 movementV = new Vector3(0, 0, movement2.y).normalized;
Vector3 movementH = new Vector3(movement2.x, 0, 0).normalized;
Vector3 forward = Camera.main.transform.forward;
forward.y = 0;
Vector3 right = Camera.main.transform.right;
moveDir = forward * movementV.z + right * movementH.x;
if (moveDir.magnitude >= 0.1f)
{
transform.rotation = Quaternion.LookRotation(moveDir);
}
animator.SetFloat("Move", moveDir.magnitude);
Vector3 finalMove = moveDir * speed;
finalMove.y = verticalVelocity;
if (controller.enabled)
{
controller.Move(finalMove * Time.deltaTime);
}
}
}




ジャンプアニメーションの実装と同期