c# - 如何判断对象是放大还是缩小?
问题描述
未开始但已完成放大或缩小。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Scaling : UnityEngine.MonoBehaviour
{
public GameObject objectToScale;
public GameObject lookAtTarget;
public float duration = 1f;
public Vector3 minSize;
public Vector3 maxSize;
public bool scaleUp = false;
public Coroutine scaleCoroutine;
public void Inits()
{
objectToScale.transform.localScale = minSize;
}
public IEnumerator scaleOverTime(GameObject targetObj, Vector3 toScale, float duration, Camera objectToScaleCamera)
{
float counter = 0;
Vector3 startScaleSize = targetObj.transform.localScale;
while (counter < duration)
{
counter += Time.deltaTime;
targetObj.transform.localScale = Vector3.Lerp(startScaleSize, toScale, counter / duration);
if (scaleUp)
{
var lookPos = lookAtTarget.transform.position - objectToScale.transform.position;
lookPos.y = 0;
var rotation = Quaternion.LookRotation(lookPos);
objectToScale.transform.rotation = Quaternion.Slerp(objectToScale.transform.rotation, rotation, counter / duration);
}
else
{
var lookPos = lookAtTarget.transform.position - objectToScale.transform.position;
lookPos.y = 0;
var rotation = Quaternion.LookRotation(objectToScaleCamera.transform.forward);//SwitchCameras.GetCurrentCamera().transform.forward);//Camera.main.transform.forward);
objectToScale.transform.rotation = Quaternion.Slerp(objectToScale.transform.rotation, rotation, counter / duration);
}
yield return null;
}
}
public IEnumerator scaleOverTime(GameObject targetObj, Vector3 toScale, float duration, float rotationSpeed)
{
float counter = 0;
Vector3 startScaleSize = targetObj.transform.localScale;
while (counter < duration)
{
counter += Time.deltaTime;
targetObj.transform.localScale = Vector3.Lerp(startScaleSize, toScale, counter / duration);
targetObj.transform.Rotate(Vector3.up * rotationSpeed * Time.deltaTime, Space.Self);
yield return null;
}
}
}
我希望能够知道对象的状态是放大还是缩小。也许使用公共静态布尔?
因此,在其他脚本中,我将能够检查例如 if(Scaling.scaledUp == true) 然后我知道对象已完成放大。下也一样。
解决方案
所以,你想检查 objectToScale.transform.localScale <= minSize 还是 objectToScale.transform.localScale >= maxSize?所有这些都是公共变量,因此标准的“if”语句应该可以解决问题,但您也可以使用这些内联属性来增加可读性。只要比例一致,就可以使用三个轴中的任何一个来进行检查。
推荐阅读
- php - 如何在php pdo中连接到远程数据库
- ansible - 为 Ansible google.cloud.compute_instance 指定子网
- spring-boot - Spring Boot CORS 问题
- ios - 如何在同一个应用中创建多个 IAP?
- javascript - Jquery:未捕获的类型错误:无法读取未定义的属性“解码”
- python - Django - 渲染模板并通过 AJAX 传递它们
- nativescript - 在单个组件中使用 Router for web 和 RouterExtensions for mobile
- python - 在 scipy 中创建 DOK 矩阵
- sql-server - SQL LocalDB API 是否已弃用?
- ios - 故障:此应用程序中的一个或多个模型正在使用可转换属性