Unity 模拟两个小球位置变化,长度也动态变化

本文介绍如何在Unity中使用C#脚本来动态调整游戏对象的旋转角度和缩放大小,通过计算两个物体之间的方向矢量,并利用叉积和点积来确定旋转角度和方向,实现游戏对象的精确对齐。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1,新建工程做如下设置。

2. Chang.cs

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Change : MonoBehaviour {

	public GameObject sup;
	public GameObject sdown;
	public GameObject cy;
	// Use this for initialization
	void Start () {
		
	}
	
	// Update is called once per frame
	void Update () {

		Vector3 from = new Vector3(0.0f, 1.0f, 0.0f);//开始轴线的方向
		Vector3 to = (sup.transform.position - sdown.transform.position);//读取轴线的方向
		Vector3 zhou = Vector3.Cross(from, to);//两个向量的叉积
		float angle = Vector3.Angle(from, to);//默认夹角为0-180
		// b 到 a 的夹角
		float sign = Mathf.Sign(Vector3.Dot(zhou.normalized, Vector3.Cross(to.normalized, from.normalized)));//判断夹角的正负
		float signed_angle = angle * sign;
		cy.transform.rotation = Quaternion.AngleAxis(angle, zhou);


		double distance = (Vector3.Distance(sup.transform.position, sdown.transform.position)) / 2.0;
		float Dis = (float)distance;
		// print(distance);
		cy.transform.localScale = new Vector3(cy.transform.localScale.x, Dis, cy.transform.localScale.z);
		cy.transform.position = (sup.transform.position + sdown.transform.position) / 2;

	}
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值