Unity物理系统-物理材质-Collider碰撞体的弹力不够大如何处理

news2024/10/6 14:31:27

物理材质Physic Material;

当碰撞器发生碰撞的时候,具有该材质的游戏物体就会具有该材质的属性;

Step1:在Project窗口下新建Physic Material(命名为mat),并更改其弹力参数为1


 

Step2:在游戏物体的碰撞器属性的Material不留空,设为Physic Material即可

 

Step3: Bounciness(弹力)调成1,最大只能是1

 Step4:然后1还不够大如何办呢?

就是把BounceCombine设为 max, 其他选项由大到小,max是最大力,也没有其他方法了

Step4-2:假如还不够,只能自己写一个发射器了

有在项目用,但贴出代码未必完整,请自行判断使用


// Slingshot : Description : Mange slingshot mechanics.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// Sling(投石器)会反弹球和得分,反弹公式和 【Force parameters】有关;
/// rigidBody 加力量 = 朝向 * Sling力 * 最大加速度
/// </summary>
public class Slingshot : MonoBehaviour {

	[Header ("Infos to missions")]
	public int index;							// choose a number. Used to create script mission.
	public GameObject[] Parent_Manager;					// Connect on the inspector the missions that use this object
	public string functionToCall = "Counter";			// Call a function when OnCollisionEnter -> true;

	[Header ("Force parameters")]	
	public float Slingshot_force = 10;					// change the slingshot force added to a ball
	public float ForceMinimum = 1;  				// Minimum contact velocity between ball and slingshot to apply force
	public float relativeVelocityMax = 1;					// The maximum force apply to the ball
	
	[Header ("Sound fx")]	
	public AudioClip Sfx_Hit;					// Sound when ball hit the slingshot		
	private AudioSource  sound_;					// Audio Component

	[Header ("Points when the slingshot is hit")]
	public int Points = 1000;					// Points you win when the object is hitting 
	private GameObject obj_Game_Manager;
	private Manager_Game gameManager;

	[Header ("Connect a led")]
	public GameObject obj_Led;					// Usefull if you want a led blinked when the slingshot is hitting
	private ChangeSpriteRenderer Led_Renderer;

	[Header ("Toy connected to the Slingshot")	]				// Connect a GameObject or paticule system with the script Toys.js attached
	public GameObject obj_Toy;					// Usefull if you want a led blinked when the slingshot is hitting
	private Toys toy;
	public int animNumber = 0;


	void Start(){																	//	--> Init
		obj_Game_Manager = GameObject.Find("Manager_Game");								// Find the gameObject Manager_Game
		if(obj_Game_Manager!=null)
			gameManager = obj_Game_Manager.GetComponent<Manager_Game>();					// Access Manager_Game from obj_Game_Manager
		sound_ = GetComponent<AudioSource>();											// Access AudioSource Component

		if(obj_Led)Led_Renderer = obj_Led.GetComponent<ChangeSpriteRenderer>();		// Access led component if needed

		if(obj_Toy)toy = obj_Toy.GetComponent<Toys>();									// Access led component if needed
	}

	void OnCollisionEnter(Collision collision) {									// --> OnCollisionEnter with the ball
		Rigidbody rb = collision.gameObject.GetComponent<Rigidbody>();

		if (rb != null && collision.relativeVelocity.magnitude > ForceMinimum){
			if(collision.relativeVelocity.magnitude < relativeVelocityMax){
				//Debug.Log("Yipo");
				float t = collision.relativeVelocity.magnitude;
				rb.velocity = new Vector3(rb.velocity.x*.5f,rb.velocity.y*.5f,rb.velocity.z*.5f);			// reduce the velocity at the impact. Better feeling with the slingshot
				rb.AddForce(transform.forward*Slingshot_force*t,ForceMode.VelocityChange);			// add force
			}
			else
				rb.AddForce(transform.forward*Slingshot_force*relativeVelocityMax,ForceMode.VelocityChange);


			if(Sfx_Hit)sound_.PlayOneShot(Sfx_Hit);										// Play a sound if needed

			for(var j = 0;j<Parent_Manager.Length;j++){
				Parent_Manager[j].SendMessage(functionToCall,index);					// Call Parents Mission script
			}

			if(gameManager)gameManager.F_Mode_BONUS_Counter();											// add one to the BONUS_Counter
			if(gameManager)gameManager.Add_Score(Points);												// add points

			if(obj_Led)Led_Renderer.Led_On_With_Timer(.2f);								// blinking

			if(obj_Toy)toy.PlayAnimationNumber(animNumber);								// play animation
		}
	}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/86559.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

408 考研《操作系统》第二章第七节:死锁和死锁的三种处理策略(预防死锁、避免死锁、检测和解除)

文章目录1.死锁1.1 什么是死锁&#xff1f;1.2 死锁、饥饿、死循环的区别1.3 死锁产生的必要条件1.4 什么时候会发生死锁&#xff1f;1.6 总结2. 死锁的处理策略——预防死锁2.1 破坏互斥条件2.2 破坏不剥夺条件2.3 破坏请求和保持条件2.4 破坏循环等待条件2.5 总结3. 死锁的处…

chatgpt+mirai实现QQ机器人

chatGPTbot 配合mirai机器使用 安装 Java &#xff08;版本必须 > 11&#xff09; 下载Mirai 控制台 https://github.com/iTXTech/mirai-console-loader/releases 手动安装插件mirai-api-http 1.双击mcl.cmd 或./mcl 运行 Mirai Console 生成 plugins 文件夹 2.从 ht…

Android基于开源项目搭建自己的技术堆栈

一、app的整体架构 从较高的层次讲&#xff0c;一个APP的整体架构可以分为两层&#xff0c;即应用层和基础框架层。 1、应用层专注于行业领域的实现&#xff0c;如金融、支付、地图、社交等&#xff0c;它直接面向用户&#xff0c;是用户对产品的第一层感知。 2、基础框架层…

从安装过程品国产Linux操作系统的技术来源与异同之处

作者&#xff1a;IT圈黎俊杰 使用Linux操作系统的第一步无疑是安装&#xff0c;本文通过作者亲手对多个国外主流开源操作系统、多个主流国产操作系统的安装过程进行记录与对比&#xff0c;让大家可以借助安装过程的界面风格、页面布局、功能等&#xff0c;细细的品一下国产Linu…

Unity3D教程:简单的碰撞检测

需求&#xff1a;当立方体Cube碰到地面Plane的时候&#xff0c;输出碰撞物体的名称&#xff0c;则表述检测到立方体碰撞了地面。 1.搭建一个简单的场景。 在新的工程中选择File->new Scene创建新的场景。然后在该场景中添加地板&#xff1a;GameObject->Create Other-&…

Mapstruct类型转换Person ->PersonDTO以及po、vo、dto、request概念

文章目录po、vo、dto、requestPerson ->PersonDTO安装插件引入依赖Maven项目结构图Person 与 PersonDTOConverterpo、vo、dto、request Mapstruct 完成类型转换&#xff01; po&#xff1a;数据持久层对象&#xff0c;用于映射数据库中的表 dto&#xff1a;数据传输对象&a…

各类软件研发行业源代码防泄密需求分析

各类软件研发行业&#xff0c;都有自己的核心数据以及核心文档&#xff0c;用户数据等敏感信息&#xff0c;这些信息数据有以下共性&#xff1a; 属于核心机密资料&#xff0c;万一泄密会给造成恶劣影响 核心数据类型多&#xff0c;有源代码数据&#xff0c;员工计算机水平高…

[附源码]Nodejs计算机毕业设计基于web的图书借阅管理系统Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置&#xff1a; Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分…

2-3查找树-树-数据结构和算法(Java)

文章目录1 概述2 查找3 插入3.1 向2-结点中插入新键3.2 向一个只含有一个3-结点的树中插入新键3.3 向一个父结点为2-结点的3-结点中插入新键3.4 向一个父结点为3-结点的3-结点中插入新键4 分析4.1 局部变换4.2 全局性质5 后记1 概述 我们前面学习过关于二叉树的算法已经能够很…

CDN工作原理以及使用CDN的好处

所有的大厂以及其他很多互联网公司都使用了CDN&#xff0c;那CDN到底是什么呢&#xff1f;为什么要使用&#xff1f;一起来看看吧&#xff01; 文章目录1. 什么是CDN&#xff1f;2. CDN 是怎么工作的&#xff1f;3. 使用 CDN 有什么好处&#xff1f;3.1 缩短网站加载时间3.2 减…

Zookeeper[2]- Zookeeper集群环境搭建

前边步骤可参考: Zookeeper[1]-Zookeeper介绍与安装以及集群环境准备_豆虫儿的博客-CSDN博客Zookeeper的介绍和安装Zookeeper客户端使用ZookeeperJavaAPI使用我们为了学习Dubbo&#xff0c;而在dubbo中需要一个注册中心&#xff0c;而Zookeeper是我们在使用Dubbo是官方推荐的…

作业-12.13【使用QT制作一个简单的登录界面】

#include "widget.h" #include "ui_widget.h" Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget) { ui->setupUi(this); //设置窗口属性 this->setWindowTitle("Sumeru Dance Training"); this->setFixedSize(8…

[激光原理与应用-52]:《激光焊接质量实时监测系统研究》-3-传感器选型和电路设计

目录 3.1 传感器的选取 3.1.1 光电探测基本概念 3.1.2 可见光传感器 3.1.4 声音传感器 3.2 信号调理电路 3.2.0 可见光电信号前置放大电路 3.2.1 红外光电信号前置放大电路 3.2.2 程控自适应增益的光信号放大电路 3.2.3 光信号滤波电路 3.2.4 声信号调理电路 3.3 数据…

【图像处理】边缘检测算子有哪些以及它们之间的对比

这个问题应该是做过传统图像处理的人都接触过的吧。粗略总结下&#xff0c;应该也不会问太细&#xff0c;面试官大概就考察下大家的知识面吧。 综述 边缘检测是图像处理和计算机视觉中&#xff0c;尤其是特征提取中的一个研究领域。图像边缘检测大幅度地减少了数据量&#xf…

第五章. 可视化数据分析图表—常用图表的绘制3—散点图,面积图,热力图

第五章. 可视化数据分析图 5.3 常用图表的绘制3—散点图&#xff0c;面积图&#xff0c;热力图 本节主要介绍常用图表的绘制&#xff0c;主要包括散点图&#xff0c;面积图&#xff0c;热力图。 1.散点图&#xff08;matplotlib.pyplot.scatter&#xff09; 散点图主要用来查…

Redux Hooks actions 调用方式优化(一)

hooks 可以说是现在react编程的的主流&#xff0c;redux 迎合这个主流也推出 toolkit 工具集来。但是在用toolkit 搭建前端框架后&#xff0c;给人的感觉就是比原先的connect 那一套好些&#xff0c;但用起来还是挺繁琐的。 一 toolkit 搭建的正常使用版本 1.1 创建store im…

三、pcm音频转wav

前言 ffmpeg录制下来的音频为pcm格式&#xff08;内部存储着十六进制数据&#xff09;&#xff0c;但pcm格式的音频无法直接播放 本文先将pcm转换成wav格式&#xff08;提要提前了解音频知识&#xff09; 首先分析wav文件格式&#xff08;wav的本质是在pcm数据前加上文件头&a…

[附源码]Node.js计算机毕业设计电子工厂进销存管理系统Express

项目运行 环境配置&#xff1a; Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境&#xff1a;最好是Nodejs最新版&#xff0c;我…

《Linux运维总结:Centos7.6使用yum安装Mysql8.0.31》

一、使用yum安装mysql服务 官方&#xff1a;下载对应的yum源 1、yum源下载 [rootlocalhost ~]# wget https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm [rootlocalhost ~]# rpm -ivh mysql80-community-release-el7-7.noarch.rpm如下图所示&#xff1a;…

vsftpd 升级3.0.2-29 和 增加账号访问

一、下载文件至/opt 百度网盘&#xff1a; 链接: https://pan.baidu.com/s/1Ad20bm5fvw8WvtaV3uHGYA 提取码: 2pa9 二、安装 2.1、切换目录 命令&#xff1a;cd /opt 2.2、授权 命令&#xff1a;chmod x centos7.6-vsftpd-upgrade.sh 2.3、安装 命令&#xff1a;./cent…