unity2D アニメーション完成

そろそろアニメーション をやってみたい!!

やってみました.

まずは,こちらが完成したマップおよび動きです.


unity アニメーション

マップに当たり判定をつけてキャラクターに動きと移動方法の指示を出しています.

キャラクター,カメラのコードは下にあります.

Player.cs

using UnityEngine;
using UnityEngine.SceneManagement;
using System.Collections;
using System.Collections.Generic;
using UnityEditor;

public class Player : MonoBehaviour {
    
    public float speed = 4f; //歩くスピード
//public GameObject mainCamera;
public float jumpPower = 200; //ジャンプ力
    public LayerMask groundLayer; //Linecastで判定するLayer

    private Rigidbody2D rb2d;
private bool isGrounded; //着地判定
    private Animator anim;
    
    void Start () {
        //各コンポーネントをキャッシュしておく
        anim = GetComponent<Animator>();
        rb2d = GetComponent<Rigidbody2D>();
    }
    
    void FixedUpdate ()
    {
        //左キー: -1、右キー: 1
        float x = Input.GetAxisRaw ("Horizontal");
        //左か右を入力したら
        if (x != 0) {
            //入力方向へ移動
            rb2d.velocity = new Vector2 (x * speed, rb2d.velocity.y);
            //localScale.xを-1にすると画像が反転する
            Vector2 temp = transform.localScale;
            temp.x = x*2;
            transform.localScale = temp;
                //Wait→Dash
            anim.SetBool ("run", true);
        } else {
            //横移動の速度を0にしてピタッと止まるようにする
            rb2d.velocity = new Vector2 (0, rb2d.velocity.y);
       //velocityは,速度ベクトルを変化されるものである.
            //Dash→Wait
            anim.SetBool ("run", false);
        }
    }

void Update ()
    {
        //Linecastでユニティちゃんの足元に地面があるか判定
        isGrounded = Physics2D.Linecast (transform.position + transform.up * 1,
             transform.position - transform.up * 0.5f,groundLayer);
        //スペースキーを押し、
        if (Input.GetKeyDown ("space")) {
            //着地していた時、
            if (isGrounded) {
                //Dashアニメーションを止めて、Jumpアニメーションを実行
                anim.SetBool("run", false);
                anim.SetTrigger("Jump");
                //着地判定をfalse
                isGrounded = false;
                //AddForceにて上方向へ力を加える
                rb2d.AddForce (Vector2.up * jumpPower);
            }
        }
        //上下への移動速度を取得
        float velY = GetComponent<Rigidbody2D>().velocity.y;
        //移動速度が0.1より大きければ上昇
        bool isJumping = velY > 0.1f ? true:false;
        //移動速度が-0.1より小さければ下降
        bool isFalling = velY < -0.1f ? true:false;
        //結果をアニメータービューの変数へ反映する
        anim.SetBool("isJumping",isJumping);
        anim.SetBool("isFalling",isFalling);
    }

    void OnTriggerEnter2D(Collider2D other){
        if(other.gameObject.CompareTag("go_sea")){
            SceneManager.LoadScene("sea");
        }else if(other.gameObject.CompareTag("go_home")){
            SceneManager.LoadScene("Main");
        }else if(other.gameObject.CompareTag("go_rock")){
            SceneManager.LoadScene("rock");
        }
    }

}

camera.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
using UnityEngine.SceneManagement;//現在のシーンがどこかを判断する.

public class camera : MonoBehaviour
{
// Start is called before the first frame update
public GameObject player;
void Start()
{
 
}

// Update is called once per frame
void Update()
{
transform.position = new Vector3(player.transform.position.x,
player.transform.position.y,-10);
//Vector3 myPositon;
if(SceneManager.GetActiveScene().name == "Main"){
if(transform.position.x <= -14){
transform.position = new Vector3(-14,player.transform.position.y,-10);
}else if(transform.position.x >= 15){
transform.position = new Vector3(15,player.transform.position.y,-10);
}
}else if (SceneManager.GetActiveScene().name == "sea"){
if(transform.position.y <= -1){
if(transform.position.x <= -4){
transform.position = new Vector3(-4,-1,-10);
}else if(transform.position.x >= 22){
transform.position = new Vector3(22,-1,-10);
}else{
transform.position = new Vector3(player.transform.position.x,-1,-10);
}
}else{
if(transform.position.x <= -4){
transform.position = new Vector3(-4,player.transform.position.y,-10);
}else if(transform.position.x >= 22){
transform.position = new Vector3(22,player.transform.position.y,-10);
}else{
transform.position = new Vector3(player.transform.position.x,
player.transform.position.y,-10);
}
}

}else if (SceneManager.GetActiveScene().name == "rock"){
if(transform.position.y <= -1){
if(transform.position.x <= 32){
transform.position = new Vector3(32,-1,-10);
}else if(transform.position.x >= 81){
transform.position = new Vector3(81,-1,-10);
}else{
transform.position = new Vector3(player.transform.position.x,-1,-10);
}
}else{
if(transform.position.x <= 32){
transform.position = new Vector3(32,player.transform.position.y,-10);
}else if(transform.position.x >= 81){
transform.position = new Vector3(81,player.transform.position.y,-10);
}else{
transform.position = new Vector3(player.transform.position.x,player.
transform.position.y,-10);
}
}

}
}
}

 

 

ほかものはgithubにあげておきます.

github.com

 

参考にさせていただいたサイト

unity3d.com

 

techblog.sega.jp

 

unity-code.com

 

qiita.com

 

お世話になったasset

assetstore.unity.com

assetstore.unity.com