【发布时间】:2020-04-19 20:08:34
【问题描述】:
我正在尝试旋转我的相机(X 轴为 50 度)并在触摸位置之后放置一个对象,这是我的脚本,可以旋转相机并移动对象,但由于它是透视的,所以对象没有移动正确地跟随手指,关于如何实现这一点的任何提示?
目标是实现类似于此视频https://www.youtube.com/watch?v=Ljnpp5ibfGQ
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CameraRotator : MonoBehaviour
{
private float initialX;
public float offset = 10f;
public float speed = 10f;
public GameObject cube;
public bool movingPlayer = false;
void Update()
{
if (Input.touchCount > 0 && !movingPlayer)
{
Touch touch = Input.GetTouch(0);
Vector3 touchPosition = Camera.main.ScreenToWorldPoint(touch.position);
switch (touch.phase)
{
case TouchPhase.Began:
initialX = touch.position.x;
break;
case TouchPhase.Moved:
if (touch.position.x + offset < initialX)
transform.rotation = Quaternion.Euler(0f, transform.rotation.eulerAngles.y - speed, 0f);
else if (touch.position.x - offset > initialX)
transform.rotation = Quaternion.Euler(0f, transform.rotation.eulerAngles.y + speed, 0f);
initialX = touch.position.x;
break;
}
}
if (Input.touchCount > 0 && movingPlayer)
{
Touch touch = Input.GetTouch(0);
Vector3 touchPosition = Camera.main.ScreenToWorldPoint(touch.position);
Ray raycast = Camera.main.ScreenPointToRay(Input.GetTouch(0).position);
if (Input.GetTouch(0).phase == TouchPhase.Moved)
{
Ray ray = Camera.main.ScreenPointToRay(Input.GetTouch(0).position);
Vector3 xx = ray.GetPoint(10f);
xx.y = 1f;
xx.x = (int)xx.x;
xx.z = (int)xx.z;
cube.transform.position = xx;
}
}
}
}
【问题讨论】:
标签: c# unity3d perspectivecamera