首先声明,脚本代码大部分来自:http://blog.csdn.net/pengdongwei/article/details/50373041

我把这个脚本做了一些改动。

需要注意的是:

关于箭(炮弹)的制作:
1, 资源原点, 在箭头上(一般是箭头产生攻击力)
2, 箭头朝向, 是z轴的增长方向,以便LookAt

脚本如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;/// <summary>
/// 设计编写:常成功
/// 创建时间:2020/05/12
/// 脚本功能:从A点(起始点), 到B点(目标点)的抛物线运动
/// 挂载位置:动态挂载, 即将运动的物体上
/// </summary>
///
/// ps. 关于箭的制作:
/// 1, 资源原点, 在箭头上(一般是箭头产生攻击力)
/// 2, 箭头朝向, 是z轴的增长方向// 从A点(起始点), 到B点(目标点)的抛物线运动
public class Parabola_A_to_B : MonoBehaviour
{// 目标点Transformpublic Transform target_trans; // 运动速度public float speed = 10;// 最小接近距离, 以停止运动public float min_distance = 0.5f;private float distanceToTarget;private bool move_flag = true;private Transform m_trans;void Start(){m_trans = this.transform; distanceToTarget = Vector3.Distance(m_trans.position, target_trans.position);StartCoroutine(Parabola());}IEnumerator Parabola(){while (move_flag){Vector3 targetPos = target_trans.position;// 朝向目标, 以计算运动m_trans.LookAt(targetPos);// 根据距离衰减 角度float angle = Mathf.Min(1, Vector3.Distance(m_trans.position, targetPos) / distanceToTarget) * 45;// 旋转对应的角度(线性插值一定角度,然后每帧绕X轴旋转)m_trans.rotation = m_trans.rotation * Quaternion.Euler(Mathf.Clamp(-angle, -42, 42), 0, 0);// 当前距离目标点float currentDist = Vector3.Distance(m_trans.position, target_trans.position);// 很接近目标了, 准备结束循环if (currentDist < min_distance){move_flag = false; }// 平移 (朝向Z轴移动)m_trans.Translate(Vector3.forward * Mathf.Min(speed * Time.deltaTime, currentDist));// 暂停执行, 等待下一帧再执行whileyield return null;}if (move_flag == false){// 使自己的位置, 跟[目标点]重合m_trans.position = target_trans.position;// [停止]当前协程任务,参数是协程方法名StopCoroutine(Parabola());// 销毁脚本GameObject.Destroy(this);}}
}

效果如下:

Unity 抛物线运动脚本(弓箭轨迹)相关推荐

  1. unity抛物线_发射弓箭轨迹的实现

    无论是愤怒的小鸟,还是弓箭发射功能,亦或者模拟炮弹受重力影响等抛物线轨迹,都可以使用本文的方法,模拟绝对真实. 和往常一样,先说原理.就是抛物运动,在垂直方向上做加速度运动,在水平方向上,做匀速运动. ...

  2. unity发射弓箭轨迹的实现

    无论是愤怒的小鸟,还是弓箭发射功能,亦或者模拟炮弹受重力影响等抛物线轨迹,都可以使用本文的方法,模拟绝对真实. 和往常一样,先说原理.就是抛物运动,在垂直方向上做加速度运动,在水平方向上,做匀速运动. ...

  3. 聊聊在博客园写博客的这两年《Unity 3D脚本编程:使用C#语言开发跨平台游戏》正式出版...

    版本状态: 2016.9 第一次印刷 (2016.11 输出到台湾) 2017.1 第二次印刷 2017.5 第三次印刷 2017.5 电子书上线:Unity 3D脚本编程--使用C#语言开发跨平台游 ...

  4. Unity Mono脚本 加密

    加密环境 引擎版本:Unity3D 5.3.4 及更高版本 (使用Mono而并非IL2CPP) 操作系统:CentOS 6.2(Final) 加密环境:Android.IOS(暂定) 加密对象:C#源 ...

  5. unity中脚本编辑器UnIDE

    引言 unity默认脚本编辑器是MonoDevelop,随着unity4.3面世,MonoDevelop (4.0.1)版本也随之而来,更新为界面更改和bug自动修复功能等,具体还未使用. 点击uni ...

  6. Unity游戏脚本简单学习

    Unity游戏脚本 1.脚本操作游戏对象 1.1.创建游戏对象 创建一个空的游戏对象 GameObject obj = new GameObject("obj1"); 用该方法创建 ...

  7. 《Unity 3D脚本编程:使用C#语言开发跨平台游戏》序言

    本文是7月受陈嘉栋的委托为他的新书<Unity 3D脚本编程:使用C#语言开发跨平台游戏>所写的序言,借助序言告诉大家.NET平台有着一个广阔的使用场景. 序言 Unity3D 是由两个具 ...

  8. Unity 3D 脚本参考

    第一章  概述  Unity中的脚本(Script)由附加到游戏对象(GameObject)的自定义脚本对象(Custom  Script  Object)组成,它们又被称为行为.脚本对象中各种函数被 ...

  9. 【错误记录】Visual Studio 2019 中运行 Unity C# 脚本时报错 ( 根据解决方案, 可能需要安装额外的组件才能获得 | .NET 桌面开发 | 使用 Unity 的游戏开发 )

    文章目录 一.报错信息 二.解决方案 三.Visual Studio 2019 中运行 Unity C# 脚本需要的组件 1..NET 桌面开发 2.使用 Unity 的游戏开发 一.报错信息 Vis ...

最新文章

  1. Virtualbox安装使用注意
  2. Linux(CentOS)安装分区方案
  3. 大龄码农经验那么丰富,为什么很多公司都不招?
  4. Leetcode记录
  5. Android笔记: 解决ScrollView嵌套ListView的冲突方法
  6. php页面之间传值_php如何在不同页面之间传值
  7. 信号量CSemaphore的使用
  8. Python 虚拟环境安装 ,避免影响生产环境。
  9. windows环境下的YOLO3入门,及opencv344配置
  10. 微信小程序实现登录注册页面
  11. 如何用金山打字通等软件练习准确地打JAVA语言
  12. 高通下载模式9008
  13. hihoCoder 1096 Divided Product 微软苏州校招笔试 12月27日
  14. 洛谷 P5708 【深基2.习2】三角形面积
  15. 2017年下半年中学综合素质问答题
  16. 000001历史数据_平安银行(000001) - 历史数据 - 股票工具
  17. Word 2007 XML 解压缩格式
  18. 【大学物理·静止电荷的电场】静电场的环路定理 电势
  19. wavecn 2.0.0.5 正式版_iOS 13.6 GM版?来了,正式版还会远吗?
  20. Google Earth上的GeoEye数据

热门文章

  1. Bentley MicroStation CE版的颜色变换(CONNECT Edition)
  2. 最简单的免费安卓手机投屏电脑游戏直播工具推荐:电脑控制手机玩游戏了解一下
  3. 数字化浪潮下 哪些银行业务或“生变”
  4. docker部署consol 集群
  5. kvm切换显示不同服务器界面,让复杂变简单 体验KVM多电脑切换器
  6. 深度学习理论——ssd从之前的网络断点接着训练
  7. c++基础复习(2)
  8. 《图解TCP/IP》——第一章 网络基础知识
  9. 计算机能不能升级固态硬盘,老电脑可以用固态硬盘吗?老电脑升级安装固态硬盘的注意事项...
  10. Django的models中ORM