第十堂 By: 貝絲
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class deerManager : MonoBehaviour
{
Vector2 vec2a, vec2b, vec2c;
Vector3 vec3a, vec3b, vec3c;
float exampleFloat;
void Start()
{
//賦值
vec2a = Vector2.up; //(0,1)
vec2b = Vector2.right; //(1,0)
vec3a = Vector3.forward; //(0,0,1)
vec3b.Set(0,0,0); //直接設定Vector的值
vec3b = new Vector3(25.0f, 20, 31);
//運算
vec2c = vec2a + vec2b; //(1,1) = (x1+x2, y1+y2)
vec2c = vec2c * 10; //(10,10) = (k * x1, k * x2)
vec2c *= 10; //同上
exampleFloat = Vector2.Distance(vec2a,vec2b);
exampleFloat = Vector2.Angle(vec2a, vec2b); //回傳起始&結束座標連線和水平方向的夾角
exampleFloat = vec2a.magnitude; //回傳向量長度
transform.position = Vector2.MoveTowards(transform.position, vec2c, 0.01f);
//(起點vector, 終點vector, 每次執行的移動距離(移動速度)) -> 寫在Update/FixedUpdate可以讓物件不斷向目標vector前進
transform.position = Vector2.Lerp(transform.position, vec2c, 0.01f);
//(起點vector, 終點vector, 兩個vector的差值) -> 更加平滑的移動(分點公式的兩線段比例)
exampleFloat = vec3a.x;
exampleFloat = vec3a.y;
exampleFloat = vec3a.z; //Vector3 獨有
transform.position = new Vector3(1, 0, 1);
float x = transform.position.x;
transform.localPosition = Vector3.zero; //相對於父物件的位置
transform.Scale = Vector3.one; //GameObject於三維座標上的尺寸比例
transform.localScale = new Vector3(-transform.localScale.x,transform.localScale.y,transform.localScale.z); //左右旋轉
transform.rotation = Quaternion.identity; //GameObject的旋轉,以Quaternion(四元數)格式儲存,非常複雜,此處的identity為不旋轉
transform.rotation = Quaternion.Euler(95,10,31); //以三維方式(歐拉角)旋轉
transform.Translate(new Vector3(12, 15, 1)); //將position以一定的向量變動
}
}
down | Shorthand for writing Vector2(0, -1). |
left | Shorthand for writing Vector2(-1, 0). |
right | Shorthand for writing Vector2(1, 0). |
up | Shorthand for writing Vector2(0, 1). |
one | Shorthand for writing Vector2(1, 1). |
zero | Shorthand for writing Vector2(0, 0). |
forward | Shorthand for writing Vector3(0, 0, 1). |
back | Shorthand for writing Vector3(0, 0, -1). |
up | Shorthand for writing Vector3(0, 1, 0). |
down | Shorthand for writing Vector3(0, -1, 0). |
left | Shorthand for writing Vector3(-1, 0, 0). |
right | Shorthand for writing Vector3(1, 0, 0). |
zero | Shorthand for writing Vector3(0, 0, 0). |
one | Shorthand for writing Vector3(1, 1, 1). |
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class deerManager : MonoBehaviour
{
Vector2 vec2a, vec2b, vec2c;
Vector3 vec3a, vec3b, vec3c;
float exampleFloat;
void Start()
{
//賦值
vec2a = Vector2.up; //(0,1)
vec2b = Vector2.right; //(1,0)
vec3a = Vector3.forward; //(0,0,1)
vec3b.Set(0,0,0); //直接設定Vector的值
vec3b = new Vector3(25.0f, 20, 31);
//運算
vec2c = vec2a + vec2b; //(1,1) = (x1+x2, y1+y2)
vec2c = vec2c * 10; //(10,10) = (k * x1, k * x2)
vec2c *= 10; //同上
exampleFloat = Vector2.Distance(vec2a,vec2b);
exampleFloat = Vector2.Angle(vec2a, vec2b); //回傳起始&結束座標連線和水平方向的夾角
exampleFloat = vec2a.magnitude; //回傳向量長度
transform.position = Vector2.MoveTowards(transform.position, vec2c, 0.01f);
//(起點vector, 終點vector, 每次執行的移動距離(移動速度)) -> 寫在Update/FixedUpdate可以讓物件不斷向目標vector前進
transform.position = Vector2.Lerp(transform.position, vec2c, 0.01f);
//(起點vector, 終點vector, 兩個vector的差值) -> 更加平滑的移動(分點公式的兩線段比例)
exampleFloat = vec3a.x;
exampleFloat = vec3a.y;
exampleFloat = vec3a.z; //Vector3 獨有
transform.position = new Vector3(1, 0, 1);
float x = transform.position.x;
transform.localPosition = Vector3.zero; //相對於父物件的位置
transform.Scale = Vector3.one; //GameObject於三維座標上的尺寸比例
transform.localScale = new Vector3(-transform.localScale.x,transform.localScale.y,transform.localScale.z); //左右旋轉
transform.rotation = Quaternion.identity; //GameObject的旋轉,以Quaternion(四元數)格式儲存,非常複雜,此處的identity為不旋轉
transform.rotation = Quaternion.Euler(95,10,31); //以三維方式(歐拉角)旋轉
transform.Translate(new Vector3(12, 15, 1)); //將position以一定的向量變動
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class deerManager : MonoBehaviour
{
Vector2 vec2a, vec2b, vec2c;
Vector3 vec3a, vec3b, vec3c;
float exampleFloat;
void Start()
{
float exampleFloat = 2.5f;
float exampleFloatAbs = Mathf.Abs(exampleFloat); //絕對值
SpriteRenderer exampleSpriteRenderer = GetComponent<SpriteRenderer>();
GameObject exampleObject1 = GameObject.Find("cat"); //用名字找Scene中的遊戲物件並回傳第一個符合的
GameObject exampleObject2 = GameObject.FindGameObjectWithTag("Cat"); //用Tag找Scene中的遊戲物件並回傳第一個符合的
GameObject.Destroy(this.gameObject); //摧毀以此Script作為Component的遊戲物件
exampleSpriteRenderer.enabled = true; //exampleSpriteRenderer的啟用狀態,可直接修改(相當於框框打勾與否)
this.enabled = true; //此Script的啟用狀態,相當於框框打勾與否
exampleObject2.SetActive(false); //停用exampleObject2(相當於框框不打勾)
float DeltaTime = Time.deltaTime; //在FixedUpdate中,這個值大約為0.02秒,其他地方則為一幀的時間
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UIElements;
public class deerManager : MonoBehaviour
{
private void Update() {
if (Input.GetKeyDown(KeyCode.RightArrow)) {
this.gameObject.transform.Translate(new Vector2(5, 0) );
} else if (Input.GetKeyDown(KeyCode.LeftArrow)) {
this.gameObject.transform.Translate(new Vector2(-5, 0) );
} else if (Input.GetKeyDown(KeyCode.UpArrow)) {
this.gameObject.transform.Translate(Vector2.up);
} else if (Input.GetKeyDown(KeyCode.DownArrow)) {
this.gameObject.transform.Translate(Vector2.down);
}
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UIElements;
public class deerManager : MonoBehaviour
{
public float speed = 5;
private void Update() {
if (Input.GetKeyDown(KeyCode.RightArrow)){
this.gameObject.transform.position += new Vector3(speed, 0, 0);
} else if (Input.GetKeyDown(KeyCode.LeftArrow)) {
this.gameObject.transform.position -= new Vector3(speed, 0, 0);
} else if (Input.GetKeyDown(KeyCode.UpArrow)) {
this.gameObject.transform.position += new Vector3(0, speed, 0);
} else if (Input.GetKeyDown(KeyCode.DownArrow)) {
this.gameObject.transform.position -= new Vector3( 0,speed, 0);
}
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UIElements;
public class deerManager : MonoBehaviour
{
private Vector2 direction = Vector2.zero;
private void Update() {
if (Input.GetKeyDown(KeyCode.UpArrow)) {
direction = Vector2.up;
} else if (Input.GetKeyDown(KeyCode.DownArrow)) {
direction = Vector2.down;
} else if (Input.GetKeyDown(KeyCode.RightArrow)) {
direction = Vector2.right;
} else if (Input.GetKeyDown(KeyCode.LeftArrow)) {
direction = Vector2.left;
}
}
private void FixedUpdate() {
transform.position = new Vector3(transform.position.x + direction.x, transform.position.y + direction.y, 0.0f);
}
}