今天是挑戰的第13天!!~
這次將從Unity Asset Store加入角色方便後續做動態的效果,(從Unity Asset Store下載並加入到專案的過程可參考前面的介紹)
加入後選擇素材包(Sunnyland>artwork>sprites>player>idle)選擇好後拖移上去完成加入,之後要來對它移動的物理引擎優化,第一步一樣是要加入Collider和Rigidbody,兩者都加入才有更好的物理效果,之後為角色附加移動的程式碼如下。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class moving : MonoBehaviour
{
public Rigidbody2D rigid2D;
void Start()
{}
void Update()
{
if (Input.GetKeyDown("space"))
{
rigid2D.AddForce(new Vector2(0, 26),ForceMode2D.Impulse);
print("jump");
}
if (Input.GetKey("left"))
{
rigid2D.AddForce(new Vector2(-3, 0), ForceMode2D.Force);
transform.localScale = new Vector3(-10, 10, 10);
print("moveleft");
}
if (Input.GetKey("right"))
{
rigid2D.AddForce(new Vector2(3, 0), ForceMode2D.Force);
print("moveright");
transform.localScale = new Vector3(10, 10, 10);
}
}
}
加入之前在寫跳躍的移動方式後,發現角色在左右移動會發生問題,因為當加入素材後,素材是有正反面的,因此向左邊移動時,反而像是倒退走的樣子,因此加入transform.localScale = new Vector3(-10, 10, 10);
來控制,當向左轉時身體也會向左轉,而素質的設定在右上角(主要是角色當初縮放的大小)
結語:在設定物理的一些力時,其實跟鋼體(Rigidbody)裡的不少選項有關,像是重力,不管跳躍還是左右移動都有關係(重力也可設定),太小(Addforce的力)太大(重力)會導致移動不了,因此後面都會加入print("jump");
可以判斷執行框是否成功執行,最後不斷調整直到設置成自己最喜歡的物理效果。不然可能會以為程式寫錯XD