iT邦幫忙

2022 iThome 鐵人賽

DAY 13
0
自我挑戰組

從零開始用Unity設計遊戲系列 第 13

目標:加入新腳色(更好的物理動態)

  • 分享至 

  • xImage
  •  

今天是挑戰的第13天!!~

這次將從Unity Asset Store加入角色方便後續做動態的效果,(從Unity Asset Store下載並加入到專案的過程可參考前面的介紹)

這是這次使用的素材>>https://assetstore.unity.com/packages/2d/characters/sunny-land-103349

加入後選擇素材包(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); 來控制,當向左轉時身體也會向左轉,而素質的設定在右上角(主要是角色當初縮放的大小)https://ithelp.ithome.com.tw/upload/images/20220926/20151024mYovg2MQOU.png

結語:在設定物理的一些力時,其實跟鋼體(Rigidbody)裡的不少選項有關,像是重力,不管跳躍還是左右移動都有關係(重力也可設定),太小(Addforce的力)太大(重力)會導致移動不了,因此後面都會加入print("jump");可以判斷執行框是否成功執行,最後不斷調整直到設置成自己最喜歡的物理效果。不然可能會以為程式寫錯XD


上一篇
目標:控制攝影機(二)
下一篇
目標:加入動畫(走動)
系列文
從零開始用Unity設計遊戲30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言