当前位置: 首页 > news >正文

unity 玩家和炸弹切线计算方式

脚本挂在炸弹上!

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class TargetDetaction : MonoBehaviour
{private Transform PlayerTF;private Transform bomb;private float radius;private string Player = "Player";void Start(){bomb = this.gameObject.transform;GameObject PlayerGO = GameObject.FindWithTag(Player);PlayerTF = PlayerGO.transform;SphereCollider capsuleCollider = PlayerGO.transform.GetComponent<SphereCollider>();radius = capsuleCollider.radius;}private Vector3 LeftTarget, RightTarget;/// <summary>/// 计算切点/// </summary>private void CaculateTarget(){//向量加减的位置在原点位置Vector3 PlayertoExplosionBomo = this.transform.position - PlayerTF.position;// Debug.DrawLine(Vector3.zero, PlayertoExplosionBomo);// Debug.DrawLine(Vector3.zero, this.transform.position);// Debug.DrawLine(Vector3.zero, PlayerTF.position);//归一化后* 半径  获取 人物到炸弹的半径向量Vector3 PlayertoExplosionBomoDircetion = PlayertoExplosionBomo.normalized * radius;//归一化// Debug.DrawLine(Vector3.zero, PlayertoExplosionBomoDircetion*3,Color.cyan);                                                                                //math.acos 求反余弦 (临边/chang) 弧度值-> 弧度转角度float angle = Mathf.Acos(radius / PlayertoExplosionBomo.magnitude) * Mathf.Rad2Deg;//向量旋转一个指定的欧拉角LeftTarget = PlayerTF.position+ Quaternion.Euler(0, -angle, 0) * PlayertoExplosionBomoDircetion;RightTarget = PlayerTF.position+ Quaternion.Euler(0, angle, 0) * PlayertoExplosionBomoDircetion;Debug.DrawLine(Vector3.zero, Quaternion.Euler(0, -angle, 0) * PlayertoExplosionBomoDircetion * 2, Color.cyan);Debug.DrawLine(Vector3.zero, Quaternion.Euler(0, angle, 0) * PlayertoExplosionBomoDircetion * 2, Color.cyan);Debug.DrawLine(Vector3.zero, PlayerTF.position, Color.cyan);Debug.DrawLine(Vector3.zero, LeftTarget);}private void Detchtion(){CaculateTarget();Debug.DrawLine(this.transform.position, LeftTarget, Color.red);Debug.DrawLine(this.transform.position, RightTarget, Color.blue);Debug.DrawLine(this.transform.position, PlayerTF.position, Color.yellow);}// Update is called once per framevoid Update(){Detchtion();}
}

http://www.lryc.cn/news/482774.html

相关文章:

  • 【MySQL】MySQL中的函数之REGEXP_LIKE
  • 跟着尚硅谷学vue2—进阶版4.0—Vuex1.0
  • 深度学习服务器租赁AutoDL
  • excel常用技能
  • Mac电脑中隐藏文件(即以 . 开头的文件/文件夹)的显示和隐藏的两种方法
  • 【Linux】:进程信号(信号概念 信号处理 信号产生)
  • Flink运行时架构以及核心概念
  • 用 Python 从零开始创建神经网络(五):损失函数(Loss Functions)计算网络误差
  • [CKS] K8S RuntimeClass SetUp
  • 【Python爬虫实战】轻量级爬虫利器:DrissionPage之SessionPage与WebPage模块详解
  • 计算机网络-2.1物理层
  • 纯血鸿蒙系统 HarmonyOS NEXT自动化测试实践
  • C 语言标准库 - <errno.h>
  • Golang自带的测试库testing的使用
  • 29.电影院售票系统(基于springboot和vue的Java项目)
  • 大学生就业平台微信小程序
  • Redis 缓存击穿
  • 初探鸿蒙:从概念到实践
  • PHP API的路由设计思路
  • 工程师 - 如何访问Github
  • 222. 完全二叉树的节点个数 迭代
  • 中心极限定理的三种形式
  • React Native 全栈开发实战班 - 导航栈定制
  • 扬州BGP高防服务器可以给企业带来哪些好处?
  • 题目讲解15 合并两个排序的链表
  • leetcode92:反转链表||
  • arkUI:遍历数据数组动态渲染(forEach)
  • js中import引入一个export值可以被修改。vue,react
  • PDF24:多功能 PDF 工具使用指南
  • 域名解析线路类型有哪几种