そろそろアニメーション をやってみたい!!
やってみました.
まずは,こちらが完成したマップおよび動きです.
マップに当たり判定をつけてキャラクターに動きと移動方法の指示を出しています.
キャラクター,カメラのコードは下にあります.
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にあげておきます.
参考にさせていただいたサイト
お世話になったasset