1. 程式人生 > >Unity如何實現在球表面移動並朝向一目標點(一)

Unity如何實現在球表面移動並朝向一目標點(一)

程式碼如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MoveOnSphere : MonoBehaviour {
    public GameObject sphere;
    public GameObject target;
	// Use this for initialization
    
	void Start () {
        if (sphere == null)
		{
            Debug.Log("球為空");
            return;
		}       
	}	
	// Update is called once per frame
	void Update () {
        if (Input.GetMouseButton(0))
        {
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;
            if (Physics.Raycast(ray, out hit, 1000, 1 << 8))//8層,球的層級
            {          
				//膠囊體在一個父級空物件下
                transform.parent.position = hit.point;
				
                //計算球上一點的法線向量
                Vector3 normal = transform.position-sphere.transform.position;
				
				//球心到目標點的向量
                Vector3 SphereToTarget = target.transform.position - sphere.transform.position;
				
				//計算次法線的向量(即與切線和法線所在平面垂直的向量)
                Vector3 binormal = Vector3.Cross(normal,SphereToTarget).normalized;
				
				//計算出指向目標物的切線向量
                Vector3 tangent = Vector3.Cross(binormal,normal);
				
				//計算父級的前方向和目標切線的角度
                float angle = Vector3.Angle(transform.parent.forward,tangent);
				
				//膠囊體旋轉相反的角度對準目標物體
                transform.localEulerAngles = new Vector3(0,-angle,0);
				
				//將UP向量朝向法線
                transform.parent.up = normal;
                
            }
        }
	}
}
在朝向問題經檢驗有些BUG,在下一章會詳細闡述並修改!!見諒

相關推薦

Unity如何實現表面移動朝向目標

程式碼如下:using System.Collections; using System.Collections.Generic; using UnityEngine; public class MoveOnSphere : MonoBehaviour { public GameObject sph

Unity實現AR類爐石傳說遊戲——開發框架

遊戲流程圖 玩家類 每場對戰中有兩個玩家例項 每個玩家擁有: 卡組 牌庫 手牌 場上的英雄 生命值,能量值等屬性 卡組 vector作為容器儲存 vector<Card> CardsCombination; 由

找到第一個只出現次的字符返回它的位置Python

出現一次 ret {} baby find highlight int images 返回 s = ‘hellobaby‘ def findchar(s): for i in s: if s.count(i)==1:

java線程與發編程實踐

tee start new read 它的 static ctrl+ als 函數 一、給出線程的定義 線程就是一條在程序代碼中獨立執行的路徑二、給出runnable的定義 一個runnable就是一段封裝在對象中的代碼序列,它的類實現了runnable接口三、

使用XStream解析復雜XML插入數據庫

針對 很多 trac ota print root parser 沒有 jdbc 環境: Springboot+mysql 我只想說jpa真的超級好用,準備深入研究一下~ 導入依賴: <dependency> <groupId>org.proj

Java發AQS原理分析

jpg 子類 ole success ces || pro 同步 無法 我們說的AQS就是AbstractQueuedSynchronizer,他在java.util.concurrent.locks包下,這個類是Java並發的一個核心類。第一次知道有這個類是在看可重入鎖R

Appium+python移動端自動化測試-環境搭建

過程 .com oid pytho 安裝環境 測試 ID alt ppi 搭建所在系統環境:Windows7版本64位系統 一、環境準備 jdk8.0.151 android-sdk_r20.3.4-windows python3.5 appium1.4.16

linux學習之多高發服務器篇

多線程 同步 https 進程調度 creat server side lis logs 高並發服務器 高並發服務器 並發服務器開發 1.多進程並發服務器   使用多進程並發服務器時要考慮以下幾點: 父最大文件描述個數(父進程中需要close關閉accept返回的新文件

Unity實現通用的物體高亮閃爍的方法輪廓或整體高亮閃爍

  一、匯入DoTween或DoTweenPro外掛到專案中 二、編寫一個控制物體輪廓高亮閃爍的指令碼,如下圖所示: using System.Collections; using System.Collections.Generic; using UnityEngine

Python-資料結構與演算法、字典對映——基於兩種不同的底層實現

保證一週更兩篇吧,以此來督促自己好好的學習!程式碼的很多地方我都給予了詳細的解釋,幫助理解。好了,幹就完了~加油! 宣告:本python資料結構與演算法是imooc上liuyubobobo老師java資料結構的python改寫,並添加了一些自己的理解和新的東西,liuyubobobo

Unity 實用教程之 移動端PC端區分選在UI非UI

Unity 實用教程之 移動端PC端區分點選在UI非UI。本節介紹,在Unity開發中,滑鼠點選的時UI還是不是UI,而且還區分移動端和電腦端情況,具體如下圖 工具/原料 Unity 方法/步驟 1 在Unity引擎上新建一個空工程,具體如下圖

opencv讀取影象畫素值讀取儲存到txt檔案RGB

#include “stdafx.h” #include"cv.h" #include <stdlib.h> #include <stdio.h> #include <math.h> #include #include #include “iost

Idea建立maven web專案,使用tomcat外掛執行

前言: 從eclipse轉idea是中遇到了很多問題,折騰了很久最終才勉強完成基本專案結構的搭建,部落格一篇以為總結!   一:建立專案 (1)點選建立專案   (2)選擇maven   (3)填寫專案

Android配置build.gradle實現Version Code編譯release包時自動增長

Android配置build.gradle實現Version Code編譯release包時自動增長(一) 經常的,開發者在上線釋出之前要打出很多測試包給測試團隊測試,每次打出的release包為了區分不同的版本號,需要手動的修改Android裡面的配置檔案build.gradle的vers

【 MATLAB 】MATLAB 實現模擬訊號取樣後的重建階保持FOH內插

這篇博文我們使用一階保持(FOH)內插來重建訊號,採用的案例依然是上篇博文中的案例: 模擬訊號: 對該訊號使用兩種不同的取樣頻率取樣。 a. 在 fs = 5000 對訊號進行取樣 b.

移動 WEB 通用優化策略介紹

提醒:本文最後更新於 949 天前,文中所描述的資訊可能已發生改變,請謹慎使用。 藉助客戶端所做的優化,如現在廣為流行的移動端 Webview 容器加速方案,優化效果侷限在指定 APP 內,甚至還會導致使用通用瀏覽器訪問速度更慢(這個話題很有意思,有機會以後再討論)。 現在過去快半年,我終於想

Spark中元件Mllib的學習11之使用ALS對movieLens中百萬條1M資料集進行訓練,對輸入的新使用者資料進行電影推薦

1解釋 spark-1.5.2 資料集:http://grouplens.org/datasets/movielens/ 一百萬條(1M) 資料劃分: 將樣本評分表以key值切分成3個部分,分別用於訓練 (60%,並加入使用者評分), 校驗 (20

手把手教你如何用objection detection API實現實時目標檢測

本系列文章共分為三篇,包括環境配置、對影象的目標檢測和利用攝像頭實現實時檢測三個部分,本文主要介紹相關的環境配置部分。 step1:準備相關檔案 在這裡我們使用的是GPU版本的TensorFlow,因此在此之前我們需要下載所需要的相關資料。主要有如下幾部分: CUDA9.

Jenkins實現測試環境到生產環境鍵部署Windows

前言: 因為dotnet在釋出站點後,然後再上傳服務時,會因為各種的網速問題,導致站點瞬間掛掉!那麼通過一鍵部署,先在測試站點測試好的檔案,複製到正式站點上的一個緩衝區,進行預熱配置,之後再本機進行檔案替換,速度是相當的快,最終把影響降到最低。 所用到的外掛: 注意:此外掛很久沒有更新,一次只能是一個目錄

IOS幾種常見的實現掃描、生成二維碼的方式、使用ZBar SDK

        最近專案中使用到掃描二維碼的功能,要求還蠻多的,包括介面的定製,掃描靈敏度,使用的穩定性等等。於是,研究總結了一下IOS中幾種掃描二維碼的實現方式。         基本上我們的實現方法有三大途徑:ZBar、ZXing、AVFoundation。在 iOS7