Идея в том чтобы лук был закреплен на руке персонажа и вращался за курсором вокруг неподвижной точки в ладони. Но лук по итогу вращается вокруг какой-то точки под персонажем.
using System.Collections; using System.Collections.Generic; using UnityEngine;
public class Bow : MonoBehaviour { private Vector3 mousePosition; private float moveSpeed = 0f; public GameObject arrow; public Transform shotPoint;
void Start() { }
void Update() { mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition); transform.position = Vector2.MoveTowards(transform.position, mousePosition, moveSpeed * Time.deltaTime); Vector3 difference = mousePosition - transform.position; difference.Normalize(); float rotationAngle = Mathf.Atan2(difference.y , difference.x) * Mathf.Rad2Deg; transform.rotation = Quaternion.Euler(0, 0, rotationAngle); }} Может проблема с камерами? Я использовал Cinemachine VirtualCamera закрепленную к игроку и CinemachineBrain на Main Camera к которой закреплена VC. Main Camera
VC Camera
Если есть другие способы реализовать механику то подскажите где почитать или как сделать. Если коряво описал то скажите что исправить для будущих вопросов и что сюда добавить это мой первый)
Upd: обьект к которому прикреплен скрипт находится не на позиции курсора. При координатах x =-0,7 и y =-3,5 на курсоре и как надо.
Идея в том чтобы лук был закреплен на руке персонажа и вращался за курсором вокруг неподвижной точки в ладони. Но лук по итогу вращается вокруг какой-то точки под персонажем.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Bow : MonoBehaviour
{
private Vector3 mousePosition;
private float moveSpeed = 0f;
public GameObject arrow;
public Transform shotPoint;
void Start()
{
}
void Update()
{
mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
transform.position = Vector2.MoveTowards(transform.position, mousePosition, moveSpeed * Time.deltaTime);
Vector3 difference = mousePosition - transform.position;
difference.Normalize();
float rotationAngle = Mathf.Atan2(difference.y , difference.x) * Mathf.Rad2Deg;
transform.rotation = Quaternion.Euler(0, 0, rotationAngle);
}}
Может проблема с камерами? Я использовал Cinemachine VirtualCamera закрепленную к игроку и CinemachineBrain на Main Camera к которой закреплена VC. Main Camera
VC Camera
Если есть другие способы реализовать механику то подскажите где почитать или как сделать. Если коряво описал то скажите что исправить для будущих вопросов и что сюда добавить это мой первый)
Upd: обьект к которому прикреплен скрипт находится не на позиции курсора. При координатах x =-0,7 и y =-3,5 на курсоре и как надо.