1. 程式人生 > >打磚塊(2)小球控制指令碼

打磚塊(2)小球控制指令碼

using System.Collections;
using System.Collections.Generic;
using UnityEngine.SceneManagement;//頭部引用
using UnityEngine;

public float BallSpeed = 10;//小球的速度
int num = 0;

void Update()
{
		if(Input.anykey && num == 0)
		//控制想小球是不是第一次離開橫板
		//&&稱為邏輯與運算子。如果兩個運算元都非零,則條件為真.(A && B) 為假。
		{
				GetComponent<Rigidbody2D>().velocity = vector2.up * BallSpeed;
				//得到Rigidbody2D裡的velocity
				num++
		}
		if(transform.position.y < -8)
		{
				SceneManage.LoadScene("Game");//小球掉落後重新載入
		}
}
float HitFactor(Vector2 ballPos, Vector2 racketPos, float racketWidth)
//球與板碰撞的反彈方向,橫板的x座標為中心
{
		return(ballPos.x - racketPos.x / racketWidth);
		//通過這個公式可以判斷小球是跟橫板左邊右邊接觸
}
private void OnCollisionEnter2D(Collision2D col)
{
		if(col.gameObject.name == "racket" && num == 1 )
		//控制小球是不是第一次離開橫板
		{	
				float x  = HitFactor(transform.position,col.transform.position,col.collider.bounds.size.x);
				Vector2 dir  = new Vector2(x,1).normalized;//normalized,向量歸一化
				GetComponent<Rigidbody2D>().velocity =dir * BallSpeed;
		}
	}
}

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述