三、Unity2D游戏制作——角色制作
1.導入角色圖片并切片
新建文件夾player-將角色圖片拖動至該文件夾內-選中圖片文件后點擊檢查器內sprite editor按鈕打開編輯器-點擊切片按鈕-切片方式選擇自動-點擊應用。
2.創建行走動畫
分別選中所有面向前方后方等四個方向切片拖動至層級對話框內,保存文件至player子文件夾walk中,命名為Walk_U等四個文件,完成后刪除層級框內剛新建的四個動畫對象文件及walk文件夾內四個動畫器文件。
這里我的窗口布局改為了默認布局
3.創建靜止動畫
打開walk文件夾-復制并粘貼Walk_D.admin等四個文件-于unity項目對話框內一次將其重命名為Idle_U等。
雙擊Walk_D打開動畫編輯器-選中第一張動畫復制-點擊Idle_D切換到Idle_D動畫粘貼,將另外三個也做同樣處理。
4.建立角色靜止動畫規則
選中層級內Player對象-拖動項目對話框內Walk_D文件至檢查器對話框內添加組件處以創建player動畫器。
雙擊player打開動畫器-刪除動畫器內已存在的Walk_D-右擊動畫器窗口空白處選擇創建狀態-新混合樹并重命名為Idle,添加兩個float類型參數Input_x、Input_y,一個bool類型參數iswalking。
雙擊打開Idle,檢查器內混合類型修改為2D Freeform Cartesian,添加四個運動域-將參數改為Input_x、Input_y-將空運動換為Idle_D、Idle_U等,參數如圖。
對此我的理解為:
假設player所在位置設為原點,當player面向Pos點方向時調用前面的motion,例如player往上時,也就是往Y軸正方向,那么pos即為(0,+)可以為(0,1)(0,0.1)(0,2)等,需要調用的動畫為Idle_U。
5.建立角色移動動畫規則
復制粘貼一份Idle更名為walking,將motion改為對應的walking動畫。
6.建立過度條件
右鍵動畫器內Idle創建過渡-取消退出時間-添加條件iswalking-值設為true,同理建立iswalking到idle過渡,設置iswalking為false。
7.創建移動控制腳本
選中層級內player對象,點擊添加組件,選擇New script
打開新建的腳本文件,編輯代碼。
using System.Collections; using System.Collections.Generic; using UnityEngine;public class BehaviourScript : MonoBehaviour {Rigidbody2D rbody; //定義變量Animator anim;// Start is called before the first frame updatevoid Start(){rbody = GetComponent<Rigidbody2D>(); //初始化anim = GetComponent<Animator>();}// Update is called once per framevoid Update(){Vector2 vector = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical")); //定義向量,獲取水平豎直方向值 使用GetAxisRaw可以兼容方向鍵游戲手柄等。if (vector!=Vector2.zero) //判斷是否在移動{anim.SetBool("iswalking", true); anim.SetFloat("Input_x", vector.x);anim.SetFloat("Input_y", vector.y);}elseanim.SetBool("iswalking", false);rbody.MovePosition(rbody.position + vector * Time.deltaTime * 100); //移動player} }注意:
當腳本文件報無法加載關聯的腳本時有兩種情況,判斷方法新建腳本文件不修改文件名若仍然報錯則為第二種:1.類名與文件名不一致,解決方案修改類名或文件名。2.環境問題,解決方案刪除項目窗口內SuperTiled2Unity文件夾并重新安裝,若仍未解決則重裝unity。
8.綁定攝像機
新建c#腳本文件,綁定到Main Camera,代碼如下:
using System.Collections; using System.Collections.Generic; using UnityEngine;public class CameraAuto : MonoBehaviour {public Transform targer; //定義變量 public float m_moveSpeed = 0.03f;Camera mycamera;// Start is called before the first frame updatevoid Start(){mycamera = GetComponent<Camera>(); //初始化}// Update is called once per framevoid Update(){//mycamera.orthographicSize = (Screen.height / 0.6f) / 4f; //設置攝像機范圍if(targer){transform.position = Vector3.Lerp(transform.position, targer.position, m_moveSpeed); //移動攝像機}} }保存后選中Main Camera,將Player拖動到Targer即可。
注意:
腳本文件中的public變量會顯示在unity腳本組件下拉菜單中,如上圖中的targer、movespeed。
總結
以上是生活随笔為你收集整理的三、Unity2D游戏制作——角色制作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python3 爬虫日记(三) 爬取堆糖
- 下一篇: 请java老鸟指教一下