c# - transform.LookAt(targetarget); 怎么不是看,而是照镜子?镜子
问题描述
试图表现出来。我用相机创建了一面镜子,并在纹理上输出了图像。我用 transform.LookAt(target); 删除脚本 它工作正常。但我想让它像镜子一样工作。我的意思是当玩家看相机时,玩家在镜子上看的角度必须与玩家不同。我正在尝试创建目标(转换)的副本并更改其属性。但它没有成功。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MirroringAngle : MonoBehaviour
{
public Transform target;
public Transform mirror;
private Transform reflectedObject;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
Vector3 inDirection = target.transform.position;
Vector3 inNormal = new Vector3(0,0,0);
Vector3 reflectedDir = Vector3.Reflect( inDirection, inNormal);
mirror.transform.rotation = Quaternion.LookRotation(reflectedDir,
Vector3.right);
transform.LookAt(reflectedDir);
}
}
还是看播放器
解决方案
我认为要实现您的方向,您需要将玩家的方向反映到镜子中。
Vector3 inDirection = targer.transform.position;
Vector3 inNormal = mirror.Transform.forward;
Vector3 reflectedDir = Vector3 Reflect(Vector3 inDirection, Vector3 inNormal);
然后你可以使用Quaternion.LookRotation让镜像相机或游戏对象朝那个方向看。
mirror.transform.rotation = Quaternion.LookRotation(reflectedDir, Vector3.up)
编辑:找到完整的脚本工作:
using UnityEngine;
public class LookAtReflectedDir : MonoBehaviour
{
public Transform source;
public Transform mirror;
//private Transform reflectedObject;
// Start is called before the first frame update
void Start()
{
Vector3 inDirection = mirror.transform.position - source.transform.position;
Vector3 inNormal = mirror.forward;
Vector3 reflectedDir = Vector3.Reflect(inDirection, inNormal);
mirror.transform.rotation = Quaternion.LookRotation(reflectedDir, Vector3.up);
}
}
镜子看着反射的目录:
推荐阅读
- memory - 您可以使用 CU_STREAM_WAIT_VALUE_FLUSH 等待哪些“远程写入”?
- swift - 如何伪装成 `__SwiftValue` 获取 swift 结构的实际类型
- git - Git:部分重写历史,将文件移动到子文件夹
- python - 将文本文件字典上传到 python 字典不起作用
- office-ui-fabric-react - DetailsList 中的 IColumn:如何在挂载时设置列宽
- magento - PHP 7.2 上的 Magento 1.9 - phpseclib 无法打开流
- javascript - 如何从脚本中检索变量以放入另一个脚本 nodejs
- python - 使用 re.sub 替换时出现问题,包括垂直线
- python - 根据数据框中的另一个值除以数据框中的值
- javascript - Cypress、Vuex 访问模块存储状态