**前言**:unity使用C#語言來做控制游戲元素的腳本,本筆錄使用vs2019編譯C#腳本.
文章目錄
- 一.如何移動
- 二.如何控制媒體等組件
- 三.如何改寫UI中的text
- 四.常用函式
一.如何移動
- 使用transform.position,不斷改變位置以形成移動.
using UnityEngine;
public class Move : MonoBehaviour
{
//movement speed in units per second
private float movementSpeed = 5f;
void Update()
{
//get the Input from Horizontal axis
// 對應鍵盤上面的左右箭頭,當按下左或右箭頭時觸發,按鍵A和D亦可
float horizontalInput = Input.GetAxis("Horizontal");
//get the Input from Vertical axis
//對應鍵盤上面的上下箭頭,當按下上或下箭頭時觸發,按鍵W和S亦可
float verticalInput = Input.GetAxis("Vertical");
//update the position
transform.position = transform.position + new Vector3(horizontalInput * movementSpeed * Time.deltaTime, verticalInput * movementSpeed * Time.deltaTime, 0);
//output to log the position change
Debug.Log(transform.position);
}
}
- 另外還可以使用transform.Translate()函式
https://docs.unity.cn/cn/2019.4/ScriptReference/Transform.Translate.html
- 使用velocity為Rigidbody添加速度
https://docs.unity.cn/cn/2019.4/ScriptReference/Rigidbody-velocity.html - 使用AddForce為Rigidbody添加力
https://docs.unity.cn/cn/2019.4/ScriptReference/Rigidbody.AddForce.html - 跳躍也應屬移動的一種,我們可以使用velocity或AddForce實作移動,下面以velocity為例:
using UnityEngine;
using System.Collections;
/*
*下面并不是單純的跳躍代碼,而是額外使用了OnCollisionEnter2D()來使得物體不能空中跳躍
*/
public class Velocity : MonoBehaviour
{
public Rigidbody2D rb;
bool Isjumping = false;
void Start()
{
rb = GetComponent<Rigidbody2D>();
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Space)&& !Isjumping)
{
rb.velocity = new Vector3(0, 10, 0);
Debug.Log("jumpyes");
Isjumping = true;
}
}
private void OnCollisionEnter2D(Collision2D collision)
{
Isjumping = false;
}
}
二.如何控制媒體等組件
媒體
- 音樂開/關
//定義
public AudioSource Au;
//賦值
Au = GetComponent<AudioSource>();
//播放
Au.Play();
//暫停
Au.Stop();
- 影片開/關
//定義
public Animation an;
//賦值
an = GetComponent<Animation>();
//播放
an.Play();
//暫停
an.Stop();
非媒體
- sprite切換
//定義sprite陣列
public sprite[] pic;
//為sprite選用pic[0];
GetComponent<SpriteRenderer>().sprite = pic[0];
三.如何改寫UI中的text
- 時間text(int型、float型)
//定義Text
public Text timeText;
//定義時間
float timenum = 60;
//更改內容到timeText,"0"整型形式,"0.0"一位小數形式
timeText.text = timenum.Tostring("0");
我們可以將其放入update中形成諸如倒計時等功能
void Update()
{
timenum -= Time.deltaTime;//Time.deltaTime指完成上一幀所用的時間(以秒為單位)(只讀),此屬性提供當前幀和上一幀之間的時間,
timeText.text = timenum.ToString("0");
}
- 文本text(string型)
public Text Txt;
Txt.text = "內容";
四.常用函式
| 函式名 | 作用 |
|---|---|
| DestoryImmediate() | 立即銷毀物件 |
| Destory() | 銷毀物件(可以添加銷毀延遲) |
| OnDestroy() | 當前腳本被銷毀時呼叫 |
| Input.GetKey() | 按下某鍵,持續回傳true |
| Input.GetKeyDown | 按下某鍵的一瞬間,回傳true |
| Input.GetKeyUp | 松開某鍵的一瞬間,回傳true |
| Input.GetMouseButton(0) | 持續檢測是否按滑鼠左鍵(針對滑鼠左中右鍵,0,1,2三個方法同) |
| OnMuseDown | 當滑鼠按下 |
| OnMouseEnter | 當滑鼠進入 |
| OnMuseExit | 當滑鼠退出 |
| OnCollisionEnter(Collision) | 當碰撞開始時,呼叫該方法一次 |
| OnCollisionExit(Collision) | 當碰撞結束時,呼叫該方法一次 |
| OnCollisionStay(Collision) | 當碰撞進行中,持續呼叫該方法 |
| OnTriggerEnter(Collider) | 當碰撞開始時,呼叫該方法一次 |
| OnTriggerExit(Collider) | 當碰撞結束時,呼叫該方法一次 |
| OnTriggerStay(Collider) | 當碰撞進行中,持續呼叫該方法 |
| Invoke() | 延時執行 |
| LoadScene() | 跳轉場景 |
| DontDestroyOnLoad() | 切換場景不摧毀 |
| Instantiate() | 克隆物件 |
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/350100.html
標籤:其他
